如果我在脚本中使用argparse和if __name__ == '__main__'
测试我也想用作模块,我应该在该测试下导入argparse然后初始化它吗?我没有在脚本中提到使用argparse的样式指南,并且许多argparse脚本示例都没有使用' if name'测试或使用它不同。以下是我到目前为止所做的事情:
#! /usr/bin/env python
def main(name):
print('Hello, %s!' % name)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description = 'Say hello')
parser.add_argument('name', help='your name, enter it')
args = parser.parse_args()
main(args.name)
我应该使用顶部的其他模块导入argparse并将其配置在脚本体中吗?
答案 0 :(得分:29)
我会将导入放在顶部,但保留在if __name__
块中使用它的代码:
import argparse
# other code. . .
def main(name):
print('Hello, %s!' % name)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description = 'Say hello')
parser.add_argument('name', help='your name, enter it')
args = parser.parse_args()
main(args.name)
将导入放在顶部可以阐明模块使用的模块。即使您不使用它,导入argpase也会对性能产生微不足道的影响。
答案 1 :(得分:3)
如果import argparse
仅在该块中引用if __name__ == '__main__'
,则可以将argparse
置于main
块内。显然,如果您的模块是由另一个模块导入的,那么该块中的代码将不会运行,因此该模块必须为ArgumentParser
提供它自己的参数(可能使用它自己的{{1}}实例)。 / p>