Python:在if uuu name_uuuu='\uuu main_uuu'之后导入并初始化Argparse?

2024-05-10 12:12:05 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我在脚本中使用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并在顶部使用其他模块,然后在脚本主体中配置它?


Tags: 模块name脚本parser示例ifbinmain
2条回答

如果argparse只在if __name__ == '__main__'块中引用,则可以将import argparse放在if __name__ == '__main__'块中。显然,如果您的模块由另一个模块导入,则该块中的代码将不会运行,因此该模块必须为main提供自己的参数(可能使用自己的ArgumentParser实例)。

我会将导入放在顶部,但将使用它的代码留在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,导入它对性能的影响也可以忽略不计。

相关问题 更多 >