Pythonglobal全局变量函数详解
global语句的作⽤
在编写程序的时候,如果想为⼀个在函数外的变量重新赋值,并且这个变量会作⽤于许多函数中时,就需要告诉python这个变量的作⽤域是全局变量。此时⽤global语句就可以变成这个任务,也就是说没有⽤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语句:
1.The global statement is a declaration which holds for the entire current code block. It means that the
2.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来调⽤变量的⽅法达到全局变量的效果
global的作⽤就相当于传递参数,在函数外部声明的变量,如果在函数内想要使⽤,就⽤global来声明该变量,这样就相当于把该变量传递进来了,就可以引⽤该变量了
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。如果你想了解更多相关内容请查看下⾯相关链接