主函数中声明的变量的范围?

Stu*_*t C 5 python variables scope

关于变量作用域的简单问题:为什么主函数中声明的变量可以从外部函数访问?即为什么下面打印“yes”?

def run():
    print var

if __name__ == '__main__':
    var = 'yes'
    run()
Run Code Online (Sandbox Code Playgroud)

有没有办法“关闭它”?就编写好的代码而言,忽略将变量作为参数传递给函数并仍然让代码运行是没有帮助的。

Fil*_*und 6

If 语句不会在 Python 中创建新作用域。没有办法“关闭它”;它是语言工作原理的核心部分。

您可以使用 main 函数将其包装在新的作用域中(这通常是您想要做的;避免混乱命名空间)并从您的主保护中调用它,如下所示:

def run():
    print var

def main():
    var = 'yes'
    run()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

  • 这是故意的,以表明如果您这样做,该变量将不再在范围内 (2认同)