变量应该位于__name__ ==“ __main__”:块的内部还是外部?

时间:2019-02-17 15:41:06

标签: python if-statement standards

似乎变量可以同时位于if __name__ == "__main__":块的内部和外部。在这种情况下,我将文件路径变量放在if块中。但是,如果我也将path变量也放在if块的外面,代码就会起作用。

def do_something(path):
    print(path)

if __name__ == "__main__":
    path = '/path/to/my/image.tif'
    do_something(path)

是否有Python标准规定应将path之类的变量放置在if __name__ == "__main__":块的内部还是外部?

2 个答案:

答案 0 :(得分:1)

Python对这两种方法都很满意,但是如果您想编写库和 可导入,可测试且将来灵活的命令行程序 进化,我的一般建议是放置所有实质性代码(除了导入 和常量)。偶尔有强 偏离该模式的原因,但我的默认方法如下所示 小例子:

# Imports.

import sys

# Constants.

DEFAULT_PATH = '/path/to/my/image.tif'

# The program's library point.

def main(args = None):
    args = sys.argv[1:] if args is None else args
    path = args[0] if args else DEFAULT_PATH
    helper(path)

# Other functions or classes needed by the program.

def helper(path):
    print(path)

# The program's command-line entry point.

if __name__ == '__main__':
    main()

答案 1 :(得分:0)

这取决于。如果程序的路径是恒定的,则它可以在if块之外。但是,如果它只是输入(而不是程序的一部分),则应位于if块内