学习记录-Python的局部变量和全局变量( 二 )


这里我的理解是:在局部作用域要对一个变量进行操作,Python会先在当前局部作用域查找有没有声明这个变量,如果有,就优先使用当前局部作用域中的变量,如果当前局部作用域作用域中没有,才会去全局作用域中寻找
4 globalglobal允许在局部作用域中声明全局变量
def spam():global eggegg = 'In spam function'spam()print(egg)

学习记录-Python的局部变量和全局变量

文章插图
通过使用global语句在局部作用域中声明了一个全局变量egg,当函数spam()调用结束后变量egg并未随之销毁
5 全局变量和局部变量的优先级在上面的例子中说过,如果在全局变量和局部变量同名,那么局部作用域中会优先处理在当前作用域中声明的的变量
用下面的例子进一步说明这个问题
def spam():print(egg)egg = 'In spam function'egg = 'Out side function'spam()
学习记录-Python的局部变量和全局变量

文章插图
报错显示局部变量在赋值前被引用,就像前面所说,当在局部作用域中处理一个变量时,Python会先查看这个变量是否在局部作用域中进行声明,然后在会在全局作用域中查找这个变量的声明
参考内容《Python编程快速上手》

经验总结扩展阅读