为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2021-03-24 17:12:25
如何在python函数中设置全局变量?
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

考虑以下代码:


a = 1


def f():

    # uses global because it hasn't been rebound

    print 'f: ',a


def g():

    # variable is rebound so global a isn't touched

    a = 2

    print 'g: ',a


def h():

    # specify that the a we want is the global variable

    global a

    a = 3

    print 'h: ',a


print 'global: ',a

f()

print 'global: ',a

g()

print 'global: ',a

h()

print 'global: ',a

输出:


global:  1

f:  1

global:  1

g:  2

global:  1

h:  3

global:  3

基本上,当您需要每个函数访问同一变量(对象)时,都使用全局变量。不过,这并不总是最好的方法。


查看完整回答
反对 回复 2021-03-29
?
森林海

TA贡献2011条经验 获得超2个赞

全局可以被任何函数访问,但是只有在函数内部使用'global'关键字明确声明它时,才能对其进行修改。以实现计数器的函数为例。您可以使用如下全局变量来做到这一点:


count = 0


def funct():

    global count

    count += 1

    return count


print funct() # prints 1

a = funct() # a = 2

print funct() # prints 3

print a # prints 2


print 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 1

a = myFunct() # a = 2

print myFunct() # prints 3

print a # prints 2


print count # raises an error! 

            # So you can use count for something else if needed!


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信