在python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,
我们称之为命名空间,也被称之为作用域。
L(在函数中定义的变量,属于局部作用域的变量,在函数外部不能使用) local
E(两个函数之间的区域称之为嵌套作用域),嵌套域的变量也可以在局部作用域可以使用 enclosing
G(在函数外部定义的变量,称之为全局变量)global
B(python已经定义好的变量和函数,称为内置作用域)bulit-in
统称LEGB法则,确定变量名的搜索顺序
优先级
局部>嵌套>全局>内置
defined
(定义)
build-in
(内置)
function
(函数)
修改变量
gloabl
(修改全局变量)
nonlocal
(修改嵌套域变量)
什么会产生作用域
if…else for…in while try…excet都不产生作用域
def(函数) class(类) module(模块)会产生作用域
is:判断两个变量是否是同一个
==:只要变量的值相等就可以
python内存管理机制
当一个数据被变量引用时,引用计数加1
当变量被删除时,对应的引用计数减1
当引用计数为0时,对应的数据真正的从内存中删除