**变量?**就是变量在代码里面的作用范围
L: Local 局部作用域
E: Enclosing 闭包函数外的函数中
G :Global 全局作用域
B :built in 内建作用域
一个文件模块里面的是全局变量,函数里面也能用这个全局的
函数内部的是局部变量
问:全局和局部重名的时候用谁?
答:就近原则,会优先使用局部变量
趣味答:你们班有个倒霉孩子叫做小明,学校有个倒霉孩子跟你班同学重名,当叫到小明,你会想到谁?肯定是你们班的那个嘛。
问:我这样操作了, 为什么会报错?
s=0
def sum1():
for i in range(10):
s=s+60
sum1()
print(s)
答:当你在函数里给一个变量赋值的时候,python 就会强行创建为局部变量。
如果只是消除错误,就在函数里面赋一个初始值就可以。 但是这不是我们要的,函数内的变量默认无法被外界访问,可以加关键字global 就可以把局部变量升级为全局的了。
问: 如果在函数里面用global 的时候正好和全局也有初始值,会怎么样?
s=1
def sum1():
global s
s=0
for i in range(10):
s=s+60
sum1()
print(s)
答: 可以看到被修改了的,这就是global 的第二个作用,在函数内修改全局变量的值