作用域

  •  指命名空间可直接访问的python程序的文本区域,这里的 ‘可直接访问’ 意味着:对名称的引用(非限定),会尝试在命名空间中查找名称;
    1. L:local,局部作用域,即函数中定义的变量;
    2. E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
    3. G:globa,全局变量,就是模块级别定义的变量;
    4. B:built-in,内建作用域,系统固定模块里面的变量,比如:int,bytearray等
    • 搜索变量的优先级顺序LEGB,即:局部作用域 > 外层嵌套作用域 > 当前模块的全局作用域 > python内置作用域

下面,以一个小实例演示:

 L = [1,2,3]

 def f1(lst):
global L
L = lst #这是在做什么?可以么? def f2(lst):
L += lst #这是在做什么?可以么? def f3(lst):
L.extend(lst) #这是在做什么?可以么? try:
f1([4,5,6])
print(L) #[4,5,6]
print()
except:
print('f1执行有误') try:
f2([4,5,6])
print(L) #f2执行有误,报错,L只在函数内部定义
print()
except UnboundLocalError:
print('f2执行有误') try:
f3([4,5,6])
print(L) #优先级,当函数内部找不到L时,向上寻找L
print()
except:
print('f3执行有误')

最新文章

  1. 09 Object
  2. java连接数据库的模糊查询
  3. 四种方案解决ScrollView嵌套ListView问题(转)
  4. BZOJ 3211 题解
  5. Parquet文件结构笔记
  6. Elasticsearch 相关名词理解
  7. JAVA中对Cookie的操作
  8. HDU 2196 Computer (树dp)
  9. Git CMD - checkout: Switch branches or restore working tree files
  10. ckrule规则编辑器在wpf中的使用
  11. linux2.6中的工作队列接口 workqueue_struct
  12. 运维人员:走好你的IT运维路
  13. Canny边缘检測算法原理及其VC实现具体解释(一)
  14. ubuntu 调试库
  15. linux的学习系列 6---打印文件和发送邮件
  16. 【bug清除】新Surface Pro使用OneNote出现毛刺现象的解决方案
  17. ln 软链
  18. C++传值、传引用
  19. 2.7 多窗口、句柄(handle)
  20. Echarts 绘图(饼图,中国地图)

热门文章

  1. wpf 依赖强制回调
  2. Html.CSS.JavaScript 学习经验
  3. 数据结构(四十七)归并排序(O(nlogn))
  4. Redis(十)集群:Redis Cluster
  5. fenby C语言 P15
  6. spring boot 面试题详解
  7. 【IntelliJ IDEA】Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA 解决办法
  8. vscode debug golang
  9. 学习笔记29_MVC异步上传图片
  10. [考试反思]1023csp-s模拟测试84:精妙