變量
變量起作用的範圍稱爲變量的作用域,不同的作用域內同名變量之間互不影響。變量分爲:全局變量、局部變量。
全局變量:
- 在函數和類定義之外聲明的變量,作用域爲定義的模塊,從定義位置開始直到模塊結束。
- 全局變量降低了函數的通用性和可讀性,應儘量避免全局變量的使用。
- 全局變量一般做常量使用。
- 函數內要改變全局變量的值,使用global聲明一下
局部變量:
- 在函數體中(包含形式參數)聲明的變量
- 局部變量的引用比全局變量快,優先考慮使用局部變量
- 如果局部變量和全局變量同名,則在函數內隱藏全局變量,只使用同名的局部變量。
全局變量的作用域測試:
a=2020 #全局變量
def one():
global a #如果在函數內改變全局變量的值,使用global關鍵字聲明
print(a) #打印全局變量a的值
a=20200528 #修改全局變量的值
one()
print(a)
#執行返回
>>>2020
20200528
***在調用函數時,函數底層的變化。函數內部的變量將在棧中形成棧幀(也稱爲startframe),幀只包含函數體中局部變量(不包含全局變量),在調用函數後,幀消失,再次調用函數時,在形成棧幀幀。
輸出局部變量和全局變量
a=100
def one(a,b,c):
print(a,b,c)
print(locals()) #打印輸出局部變量
print("---->"*20)
print(globals()) #打印輸出全局變量
one(11,22,33)
結果返回