一:全局参数与局部参数的典型举例
①:在函数外定义name并在函数内定义name
>>> name='louis'>>> def fun(): name='wedi' print(name)>>> fun()wedi>>> print(name)louis>>>
②:在函数外定义name并在函数内直接引用
>>> name='louis'>>> def fun(): print(name)>>> fun()louis>>> print(name)louis
由上第一个例子可知,函数虽然对name重新赋值,但并没有覆盖函数前已经定义了的name,故函数内的name为局部参数,由第二个例子可知全局参数可被函数直接引用。综上可知,函数调用的过程为,先查询局部内是否定义,如有则直接使用,否则向上一级查找。直至找到为止,且局部重新赋值后,该值只能在函数内使用,并不影响全局参数。
二:就要局部修改,同时全局也跟着变
>>> name='louis'>>> def fun(): global name name='wedi' print(name)>>> fun()wedi>>> print(name)wedi
由上可知,只需要加global关键字,name就是全局变量。同时需要注意的是,name='wedi',不可在global关键字前。
三:在函数内对全局可变变量追加与删除
>>> name=['louis','james']>>> def fun(): name.append('barry') print(name)>>> fun()['louis', 'james', 'barry']>>> print(name)['louis', 'james', 'barry']
其实变量就是内存的一个地址的指向名称,当该内存地址内的内容为可变时,局部变量就可修改,但内存指向任然不变;当内存地址指向的内容为不可变时,局部变量的赋值,就是在内存里重新开拓内存块存储值,但函数执行完毕,变量的内存指向将重新指向全局变量的内存地址。