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

标签 python variables scope

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

def run():
    print var

if __name__ == '__main__':
    var = 'yes'
    run()

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

最佳答案

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

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

def run():
    print var

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

if __name__ == '__main__':
    main()

关于python - 主函数中声明的变量的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060747/

相关文章:

python - 在运行时将小部件添加到嵌套布局

python - 如何在 python 中成对修改列表中的值?

python - 如何在字符的最后一个实例之后对文本文件进行排序?

javascript - Angular - 使用范围变量设置 ng-model

python - 令人费解的作用域行为

python - Python 中的 SHA-256 实现

Python 查找自己的代码中使用其他变量的位置

Android 避免创建新对象

variables - 无法在批处理文件中设置变量

javascript - 在 Closure Compiler 中公开本地类型