Python:如果 __name__ == '__main__' 之后导入并初始化 Argparse?
Python: Import And Initialize Argparse After if __name__ == '__main__'?
如果我在我也想用作模块的脚本中使用 argparse 和 if __name__ == '__main__'
测试,我应该在该测试下导入 argparse 然后初始化它吗? None 我发现的风格指南中提到在脚本中使用 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 和我的其他模块,然后在脚本主体中配置它吗?
如果 argparse
仅在该块中引用,则将 import argparse
放在 if __name__ == '__main__'
块中是可以的。显然,如果您的模块是由另一个模块导入的,则该块中的代码不会 运行,因此该模块必须为 main
提供自己的参数(可能使用自己的 [=14= 实例) ]).
我会将导入放在顶部,但将使用它的代码留在 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 也导入它对性能的影响可以忽略不计。
如果我在我也想用作模块的脚本中使用 argparse 和 if __name__ == '__main__'
测试,我应该在该测试下导入 argparse 然后初始化它吗? None 我发现的风格指南中提到在脚本中使用 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 和我的其他模块,然后在脚本主体中配置它吗?
如果 argparse
仅在该块中引用,则将 import argparse
放在 if __name__ == '__main__'
块中是可以的。显然,如果您的模块是由另一个模块导入的,则该块中的代码不会 运行,因此该模块必须为 main
提供自己的参数(可能使用自己的 [=14= 实例) ]).
我会将导入放在顶部,但将使用它的代码留在 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 也导入它对性能的影响可以忽略不计。