本帖最后由 测试积点老人 于 2018-12-17 15:51 编辑
1、块级作用域和Java、C甚至JS等大多数编程语言不同,python中并没有块级作用域,代码块中声明的变量可以自由地在代码块外访问。因为python没有“空的”声明语句,变量第一次出现的时候就必须赋值,在使用代码块时,如果必须在代码块内才能访问变量,将变得无法正常编写。如:
- if True:
- name = "cai"
- else:
- name = "No cai"
- # 如果在大多数其他语言中,name无法访问
- # 但是在python中可以访问代码块中创建的对象
- print(name)
复制代码
2、局部(local)作用域python中虽然没有块级作用域,但是有“局部作用域”,即一个方法内部定义的变量。 和其他编程语言相同,python中方法内部定义的变量仅限于方法内部使用。如:
- def method():
- name = "cai"
- # 方法外无法访问方法内部的变量。
- # 这里IDE会以红线警告,运行报NameError
- print(name)
复制代码
3、Enclosing作用域Enclosing作用域包含所有的非全局、非局部的变量。比如两个嵌套函数之前的变量。 和其他编程语言相同,内部函数可以访问外部函数的变量,而外部函数无法访问内部函数的变量。
4、Global作用域
即当前脚本最外层的作用域。
|