51Testing软件测试论坛

标题: python的作用域 [打印本页]

作者: 测试积点老人    时间: 2018-12-17 15:49
标题: python的作用域
本帖最后由 测试积点老人 于 2018-12-17 15:51 编辑

1、块级作用域

和Java、C甚至JS等大多数编程语言不同,python中并没有块级作用域,代码块中声明的变量可以自由地在代码块外访问。因为python没有“空的”声明语句,变量第一次出现的时候就必须赋值,在使用代码块时,如果必须在代码块内才能访问变量,将变得无法正常编写。如:


  1. if True:
  2.     name = "cai"
  3. else:
  4.     name = "No cai"
  5. # 如果在大多数其他语言中,name无法访问
  6. # 但是在python中可以访问代码块中创建的对象
  7. print(name)
复制代码

2、局部(local)作用域

python中虽然没有块级作用域,但是有“局部作用域”,即一个方法内部定义的变量。

和其他编程语言相同,python中方法内部定义的变量仅限于方法内部使用。如:


  1. def method():
  2.     name = "cai"

  3. # 方法外无法访问方法内部的变量。
  4. # 这里IDE会以红线警告,运行报NameError
  5. print(name)
复制代码

3、Enclosing作用域

Enclosing作用域包含所有的非全局、非局部的变量。比如两个嵌套函数之前的变量。

和其他编程语言相同,内部函数可以访问外部函数的变量,而外部函数无法访问内部函数的变量。


4、Global作用域

即当前脚本最外层的作用域。



作者: Miss_love    时间: 2021-1-5 16:59
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2