發現一個問題。
python中list變量作為全局變量時,在函數中可以直接修改。
而普通變量則需要先在函數中global聲明,否則會報錯。
例如:
a = 1
def fun():
global a
a = 2
而list:
b = [1,2]
def fun():
b[0] = 2
在函數中直接修改list則是可以的。
原因是:
普通變量如果在函數中賦值
a = 2
會有歧義。因為它既可以是表示引用全局變量a,也可以是創建一個新的局部變量,所以在python中,默認它的行為是創建局部變量,除非顯式聲明global。
而對列表list變量進行賦值
b[0] = 2
則不會有歧義。它是“明確的”,因為如果把b當作是局部變量的話,它會報KeyError,所以它只能是引用全局的b,故不需要多此一舉顯式聲明global。
參考自:
實例講解Python中global語句下全局變量的值的修改
Freecode# : www.cnblogs.com/yym2013