【问题标题】:Python global variable scopingPython 全局变量作用域
【发布时间】:2013-03-13 18:55:12
【问题描述】:

我试图在某些函数中声明一些全局变量并将带有这些函数的文件导入另一个。但是,我发现在第二个文件中运行该函数不会创建全局变量。我尝试创建另一个具有相同名称的变量,但是当我打印出变量时,它会打印出第二个文件的值,而不是全局值

globals.py

def default():
    global value
    value = 1

main.py

from globals import *
value = 0
def main():
    default()
    print value

if __name__=='__main__':
    main()

这将打印 0。如果我在 main 中没有 value = 0,程序将出错(未定义值)。

如果我在函数之外的globals.py 中声明value,main.py 将采用全局value 的值,而不是default() 中设置的值

让value成为python中的全局变量的正确方法是什么?

【问题讨论】:

    标签: python global-variables scope


    【解决方案1】:

    Python 中的全局变量仅对其模块是全局变量。没有可以修改的名称对整个过程是全局的。

    你可以用这个来完成你想要的:

    globals.py:

    value = 0
    def default():
        global value
        value = 1
    

    main.py:

    import globals
    def main():
        globals.default()
        print globals.value
    
    if __name__ == "__main__":
        main()
    

    不过,我不知道这样的全局变量是否是解决您的问题的最佳方法。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 2016-12-30
      • 1970-01-01
      • 2019-07-24
      • 2017-06-21
      • 2014-09-24
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多