范围
范围是 a 的 a,其中 a 是 。 ” “这里的意思是到一个名字中去查找这个名字。
作用域是程序可以直接访问的命名空间主体的区域。
在程序中,如果直接访问一个变量,就会从内向外访问所有的作用域,直到找到为止,否则会报未定义的错误。
,程序变量并非在所有位置都可以访问,访问权限取决于为变量赋值的位置。
变量的作用域决定了程序的哪个部分可以访问特定的变量名。 范围有 4 种类型,即:
有四个范围:
L(Local):最内层包含局部变量,例如函数/方法内部。
E():包含非局部(non-local)和非全局(non-)变量。 例如,如果有两个嵌套函数,并且函数(或类)A包含函数B,那么对于B中的名称,A中的范围是。
G():当前脚本的最外层,如当前模块的全局变量。
B (Built-in): 包含内置变量/关键字等,最后搜索
规则顺序:L –> E –> G –> B。
如果本地没有找到,就会在本地查找(比如闭包)。 如果没有找到,就会全局搜索,然后再内置中搜索。
= 0 # 全局范围
def 外部():
= 1 # 在闭包函数之外的函数中
定义内部():
= 2 # 本地范围
内置作用域是通过一个标准模块named来实现的,但是变量名本身并不放在内置作用域中,所以必须导入这个文件才能使用它。 在.0中,您可以使用以下代码来查看预定义了哪些变量:
>>>
>>> 目录()
只有模块()、类(class)和函数(def,)会引入新的作用域。 其他代码块(如if/elif/else/、try/、for/while等)不会引入新的作用域。 范围,也就是说这些语句内定义的变量也可以从外部访问,如下代码所示:
如果属实:
msg =“我来自”
打印(消息)
在示例中,msg 变量是在 if 语句块中定义的,但仍然可以从外部访问它。
如果 msg 定义在函数中,则它是局部变量,不能从外部访问:
本博客源码地址:
麻烦您给个star,谢谢!