meiyao 发表于 2024-6-9 10:45

共读入围:《趣味微项目,轻松学Python》+args函数、模块导入

<p>&nbsp;</p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">*args 的用途和工作原理:</span></span></p>

<ul>
        <li><span style="font-family:宋体;"><span style="font-size:16px;">实参位置参数是指那些在函数调用时按照顺序直接传递的参数,这些参数不需要指定形参名。例如,在函数调用 func(a, b, 1) 中,a、b 和 1 都是位置参数。</span></span></li>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>用途</strong>:*args 用于在函数定义中<strong>处理那些数量不确定的位置参数</strong>。这意味着,通过使用 *args,你可以传递任意数量的位置参数给函数。</span></span></li>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>工作原理</strong>:在函数内部,args 实际上是一个<strong>元组</strong>,它包含了所有传递给函数的位置参数。单个星号(*)是以新元组形式<strong>打包实参中所有的位置参数</strong>并将新元组赋值给星号后的变量 args,即收集位置参数。</span></span></li>
</ul>

<p><span style="font-family:宋体;"><span style="font-size:16px;"> </span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">&nbsp;</span></span></p>

<p>&nbsp;</p>

<p><span style="font-family:宋体;"><span style="font-size:16px;"> </span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">我理解您想要使用argparse模块来创建一个命令行工具,该工具接受一个位置参数(即单词),并希望get_args()函数是程序的第一个函数,以便立即看到预期的输入。以下是一个简化的示例,展示了如何使用argparse来定义这样的命令行参数,并编写一个get_args()函数来获取这些参数。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">首先,您需要导入argparse模块,并定义一个函数get_args()来设置命令行参数并解析它们。然后,在您的主程序或脚本的其余部分中,您可以调用这个函数来获取参数。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">&nbsp;在<code>argparse.ArgumentParser</code>的<code>add_argument()</code>方法中,<code>&#39;word&#39;</code>是参数的名字(在<code>args</code>对象中作为属性使用),<code>metavar=&#39;WORD&#39;</code>定义了帮助信息中显示的占位符,<code>help</code>参数提供了关于该参数的简短描述。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">下来上传一段代码辅助理解。</span></span></p>

<pre>
<code>import argparse# 导入 argparse 模块,用于处理命令行参数

def get_args():
    # 创建一个 ArgumentParser 对象
    parser = argparse.ArgumentParser(description='Process a single word.')# 设置解析器的描述
    # 添加一个位置参数
    parser.add_argument('word', metavar='WORD', help='The word to be processed.')# 添加一个名为 'word' 的位置参数
    # 注意:这里我们没有添加其他不需要的参数
    # 使用 parse_args() 方法解析参数(从 sys.argv 中读取)
    args = parser.parse_args()# 注意这里是 parse_args 而不是 parse args
    return args# 返回解析后的参数对象

# 在主程序中调用 get_args()
def main():
    # 获取命令行参数
    args = get_args()# 调用 get_args 函数获取参数
    # 打印出接收到的单词
    print(f'Processing word: {args.word}')# 使用 f-string 格式化字符串并打印出单词

# 如果这个脚本被直接运行(而不是被导入为一个模块),则执行 main() 函数
if __name__ == '__main__':
    main()# 当脚本作为主程序运行时,执行 main 函数</code></pre>

<p><span style="font-family:宋体;"><span style="font-size:16px;">Python脚本使用了argparse模块来定义并处理命令行参数。脚本的主要功能是接收一个位置参数,并打印出该参数。</span></span></p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">以下是脚本的详细总结:</span></span></p>

<ol>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>导入模块</strong>:</span></span>

        <ul>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">脚本首先导入了argparse模块,这是一个Python标准库模块,用于编写用户友好的命令行接口。</span></span></li>
        </ul>
        </li>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>定义get_args函数</strong>:</span></span>
        <ul>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">该函数创建了一个ArgumentParser对象,并设置了描述信息(&#39;Process a single word.&#39;)。</span></span></li>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">使用add_argument方法添加了一个位置参数word,并设置了其在帮助信息中的占位符(&#39;WORD&#39;)和描述信息(&#39;The word to be processed.&#39;)。</span></span></li>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">使用parse_args方法解析命令行参数,并将结果返回为一个命名空间对象。</span></span></li>
        </ul>
        </li>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>定义main函数</strong>:</span></span>
        <ul>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">该函数调用了get_args函数来获取命令行参数。</span></span></li>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">使用f-string(格式化字符串字面量)来打印出接收到的单词。</span></span></li>
        </ul>
        </li>
        <li><span style="font-family:宋体;"><span style="font-size:16px;"><strong>主程序入口</strong>:</span></span>
        <ul>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">使用if __name__ == &#39;__main__&#39;:来判断脚本是否作为主程序运行。</span></span></li>
                <li><span style="font-family:宋体;"><span style="font-size:16px;">如果是,则执行main函数。</span></span></li>
        </ul>
        </li>
</ol>

<p>&nbsp;</p>

<p><span style="font-family:宋体;"><span style="font-size:16px;">模块导入:</span></span></p>

<p>&nbsp;</p>

<p>Python提供了多种模块导入的方式,以下是清晰的分点表示和归纳:</p>

<ol>
        <li><strong>使用import语句导入整个模块</strong>:</li>
        <li><strong>使用from ... import ...语句导入模块中的特定内容</strong>:</li>
        <li><strong>为导入的模块或内容设置别名</strong>:</li>
        <li><strong>导入模块中的所有内容</strong>(不推荐):</li>
        <li><strong>导入包中的模块</strong>:</li>
        <li><strong>相对导入</strong>(通常在包内部使用):</li>
        <li><strong>动态导入</strong>:</li>
</ol>

<p>书中没有详细的介绍,我这里提一个,贴出重要的。</p>

<p>&nbsp;</p>

<p>模块导入:</p>

<p>模块的导入一般写在文件的开头。</p>

<p>常用的组合形式如:<br />
import 模块名 (可以一次导入多个模块,模块名之间用逗号隔开)from 模块名 import 类、变量、方法等<br />
from 模块名 import *<br />
import 模块名 as 别名<br />
from 模块名 import 功能名 as 别名</p>

<p>&nbsp;</p>

<p>感觉理解的不是很好,不知道怎么写,先暂时到这里,后面我理解的更好一点了,再贴出来。&nbsp;</p>

lugl4313820 发表于 2024-6-9 11:15

<p>都差不多吧,反正是他们连起来就对上了。</p>

meiyao 发表于 2024-6-10 08:20

lugl4313820 发表于 2024-6-9 11:15
都差不多吧,反正是他们连起来就对上了。

<p>哈哈,感觉 还是要搞细一点,总感觉还差一点点。</p>
页: [1]
查看完整版本: 共读入围:《趣味微项目,轻松学Python》+args函数、模块导入