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 也导入它对性能的影响可以忽略不计。