發現一個問題。python
python中list變量做爲全局變量時,在函數中能夠直接修改。函數
而普通變量則須要先在函數中global聲明,不然會報錯。spa
例如:.net
a = 1code
def fun():htm
global ablog
a = 2get
而list:it
b = [1,2]class
def fun():
b[0] = 2
在函數中直接修改list則是能夠的。
緣由是:
普通變量若是在函數中賦值
a = 2
會有歧義。由於它既能夠是表示引用全局變量a,也能夠是建立一個新的局部變量,因此在python中,默認它的行爲是建立局部變量,除非顯式聲明global。
而對列表list變量進行賦值
b[0] = 2
則不會有歧義。它是「明確的」,由於若是把b看成是局部變量的話,它會報KeyError,因此它只能是引用全局的b,故不須要畫蛇添足顯式聲明global。
參考自:
Freecode# : www.cnblogs.com/yym2013