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);當前函數內的作用域 (局部作用域)
依據就近原則,從下往上 從里向外 依次尋找