python的全局变量与局部变量
全局变量与局部变量两者的本质区别就是在于作用域
用通俗的话来理解的话,
全局变量是在整个py文件中声明,全局范围内都可以访问
局部变量是在某个函数中声明的,只能在该函数中调用它
局部变量只能在局部使用。
那么不巧的是,我的局部变量和全局变量定义了同一个名称,谁的优先级更高呢?
a=3
def ss():
a=5
print("a是:",a)
ss()
a是: 5
在函数内局部变量会优先使用。
而优先级还有一个体现,来看下面的例子
a = 3
def showvariable():
a = a * 5
print(a)
showvariable()
Traceback (most recent call last):
File "C:/Users/LENOVO/....py", line 5, in <module>
showvariable()
File "C:/Users/LENOVO/....py", line 3, in showvariable
a = a * 5
UnboundLocalError: local variable 'a' referenced before assignment
这里会报错,是因为在执行a=a*5时,函数内部的a和全局变量a重名了,但是它会优先使用局部变量a。而局部变量a没有被赋予初始值,所以会报错。
如果我们想在函数内部使用全局变量的话,这就需要使用一个标志,让编译器知道这是一个全局变量,所以我们就用到了global。
a = 3
def showvariable():
global a #这里声明a是一个全局变量
a = a * 5
print("a是:",a)
showvariable()
a是: 15
我们也可以在函数内部定义global在函数外面使用
def showvariable():
global a
a = 5
showvariable()
print("a是:",a)
a是: 5
但是这里要注意必须先在外面调用showvariable()函数,否则就会因为函数没有被调用,所以全局变量a并没有被创建,就会报错。
最后希望大家记住,局部变量就是只能在局部使用的变量,而全局变量是在整个程序中可以使用的
注意:
在函数内部,可以引用全局变量;如果全局和局部都有一个变量,函数查找,由内而外,局部没有,再到全局找。