Python 变量应该位于if“name”的内部还是外部__主要内容:块

Python 变量应该位于if“name”的内部还是外部__主要内容:块,python,if-statement,standards,Python,If Statement,Standards,似乎变量可以位于if uuuu name_uuu==“uuu main_uuu”:块的内部和外部。在这种情况下,我在if块中放置一个文件路径变量。但是,如果我将path变量也放置在if块之外,代码也会工作 def do_something(path): print(path) if __name__ == "__main__": path = '/path/to/my/image.tif' do_something(path) 是否有任何Python标准规定,如果uu

似乎变量可以位于
if uuuu name_uuu==“uuu main_uuu”:
块的内部和外部。在这种情况下,我在
if
块中放置一个文件路径变量。但是,如果我将
path
变量也放置在
if
块之外,代码也会工作

def do_something(path):
    print(path)

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

是否有任何Python标准规定,如果uuu name_uuuu==“uuu main_uuu”:块,那么像
path
这样的变量是否应该放在
块的内部或外部

视情况而定。如果程序的路径为常量,则它可以位于If块之外。但是,如果它只是一个输入(而不是程序的一部分),它应该在if块中,Python对这两种方法都很满意,但是如果您想编写库和 可导入、可测试且灵活的命令行程序 在进化论中,我的一般建议是将所有实质性代码(导入除外 函数或方法的内部。偶尔会有强烈的 有理由偏离这种模式,但我的默认方法如下 小小的例子:

# Imports.

import sys

# Constants.

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

# The library's entry 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()

如果路径是固定的,那么给路径变量一个全局范围通常是一个好的做法。这并不重要。Python有函数作用域而不是块作用域,因此它是一个全局变量,即使您在
if
块中定义它。