【python】详解global全局变量函数

在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错。
count = 1

def cc():
    count = count+1

cc()
Traceback (most recent call last):

  File "<ipython-input-17-f6b58c567c1a>", line 1, in <module>
    cc()

  File "<ipython-input-16-aab94f1185b9>", line 2, in cc
    count = count+1

UnboundLocalError: local variable 'count' referenced before assignment

意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。

num = 1

id(num)
Out[31]: 1886744032

def cc():
    num = 2
    print(id(num))
    print(num)


cc()
1886744064
2

可以看出函数里面的num是局部变量,有什么办法能在函数内使用全局变量呢?根据官方文档,可以用global语句:

The global statement is a declaration which holds for the entire current code block. It means that the 
listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global.

意思是说global语句可以声明一个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。所以在函数中添加global声明:

def cc():
    global count
    count = count+1
    print(count)

cc()
2
用global声明多个变量需要用逗号分隔:
num = 0

def cc():
    global count,num
    count = count+1
    num = num+2
    print(count,num)


cc()
3 2
# 可以函数中的global声明能够修改全局变量
num
Out[24]: 2
# 
count
Out[25]: 3
在使用全局变量的场合,也可用类变量代替
class C:
    count = 3


def cc():
    count = C.count+1
    print(count)


cc()
4

总结:如果是想在函数中调用全局变量,这需要global声明。之后调用全局变量,全局变量的值也随之可能发生改变,如果是count = count+1这种再定义的时候,否则全局变量只是被调用。也可以通过class来调用变量的方法达到全局变量的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值