猿问

如何在python函数中使用全局变量?

如何在python函数中设置全局变量?


神不在的星期二
浏览 187回答 3
3回答

智慧大石

考虑以下代码:a = 1def f():    # uses global because it hasn't been rebound    print 'f: ',adef g():    # variable is rebound so global a isn't touched    a = 2    print 'g: ',adef h():    # specify that the a we want is the global variable    global a    a = 3    print 'h: ',aprint 'global: ',af()print 'global: ',ag()print 'global: ',ah()print 'global: ',a输出:global:  1f:  1global:  1g:  2global:  1h:  3global:  3基本上,当您需要每个函数访问同一变量(对象)时,都使用全局变量。不过,这并不总是最好的方法。

森林海

全局可以被任何函数访问,但是只有在函数内部使用'global'关键字明确声明它时,才能对其进行修改。以实现计数器的函数为例。您可以使用如下全局变量来做到这一点:count = 0def funct():    global count    count += 1    return countprint funct() # prints 1a = funct() # a = 2print funct() # prints 3print a # prints 2print count # prints 3现在,这一切都很好,但是,除了常量之外,对其他任何东西都使用全局变量通常不是一个好主意。您可以使用闭包作为替代实现,这样可以避免污染名称空间并且更加简洁:def initCounter():    count = 0    def incrementCounter():        count += 1        return count    #notice how you're returning the function with no parentheses     #so you return a function instead of a value    return incrementCounter myFunct = initCounter()print myFunct() # prints 1a = myFunct() # a = 2print myFunct() # prints 3print a # prints 2print count # raises an error!             # So you can use count for something else if needed!
随时随地看视频慕课网APP

相关分类

Python
我要回答