一、作用域法则
函数定义本地作用域,而模块定义的是全局作用域
- 内嵌的模块是全局作用域
- 全局作用域的作用范围仅限于单个文件
- 每次对函数调用都创建了一个新的本地作用域
- 赋值的变量名除非声明为全局变量或非本地变量,否则均为本地变量:在默认情况下,函数定义内部的变量名为本地作用域,如果需要给一个顶层的变量在函数内部变量赋值,需要在函数内部通过global语句声明。
- 所有的其他变量名都可以归纳为全局、本地、内置。
二、变量名解析原则:LEGB
- 变量名分为三个作用域进行查找:首先本地,函数内,全局,内置
- 在默认情况下,函数名赋值会创建或改变本地变量
- 全局声明和非本地声明将赋值的变量名将映射到模块文件内部的作用域
三、LEGB法则