解释python命名空间和变量范围。
命名空间是一种实现范围的方法。在Python中,每个包,模块,类,函数和方法函数都拥有一个“命名空间”,在该命名空间中解析变量名。对函数,模块或包进行评估(即开始执行)时,将创建命名空间。将其视为“评估环境”。当函数等完成执行时,将删除命名空间。变量被删除。另外,如果名称不在本地命名空间中,则使用全局命名空间。
每个变量名都在本地命名空间(函数的主体,模块等)中检查,然后在全局命名空间中检查。
通常仅在本地命名空间中创建变量。全局和非本地语句可以在本地命名空间以外的地方创建变量。
当使用变量来确定其值应来自何处时,必须进行范围解析。Python中的范围解析遵循LEGB规则。
L,本地—在函数(或lambda)中以任何方式分配的名称,但未在该函数中声明为全局。
E,封闭函数局部变量-从内部到外部,在任何和所有静态封闭函数(或lambda)的局部范围内命名。
G,全局(模块)—在模块文件的顶级分配的名称,或通过在文件内的def中执行全局语句来分配的名称。
B,内置(Python)-在内置名称模块中预先分配的名称:open,range,SyntaxError等。