1.全局变量和局部变量
# 1.定义全局变量
c1 = 91 #顶格写的就是全局变量
# (1) 局部变量
def func():
# 定义局部变量
a = 5 ##有缩进的就是局部变量
局部变量和全局变量因为所在空间不一样,所以不会有影响
范例:
c = 6
def func():
c = 7
func()
2.函数内修改全局变量,函数外修改修改局部变量
# 2.在函数内部可以修改全局变量 使用global 关键字
'''先用global 把这个变量声明一下,在进行修改,一般放在函数的开头位置'''
def func():
global c1
print(c1)
c1 = 93
func()
"""
# global 总结:
如果函数外部有这个全局变量,在函数内部使用global关键字,可以修改全局变量
如果函数外部没有这个全局变量,在函数内部使用global关键字,可以定义一个全局变量;
"""
def outer():
a = 10
def inner():
nonlocal a
a = 11
print(a,1)
inner()
print(a,2)
outer()
#(3) nonlocal 只能修饰局部变量,当所有层级找不到的时,直接报错;
3.LEGB原则(即就近原则找变量)
#找寻变量的调用顺序采用LEGB原则(即就近原则)
B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)
G —— Global(module); 函数外部所在的命名空间 (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域 (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找