发现一个问题。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