作用域

什么是命名空间

比如有一个学校,有10个班级,在7班和8班中都有一个叫“小王”的同学,如果在学校的广播中呼叫“小王”时,7班和8班中的这2个人就纳闷了,你是喊谁呢!!!如果是“7班的小王”的话,那么就很明确了,那么此时的7班就是小王所在的范围,即命名空间

globals、locals

在之前学习变量的作用域时,经常会提到局部变量和全局变量,之所有称之为局部、全局,就是因为他们的自作用的区域不同,这就是作用域

  • locals

  • globals

LEGB 规则

Python 使用 LEGB 的顺序来查找一个符号对应的对象

locals -> enclosing function -> globals -> builtins

locals,当前所在命名空间(如函数、模块),函数的参数也属于命名空间内的变量

enclosing,外部嵌套函数的命名空间(闭包中常见)

def fun1(): a = 10 def fun2(): # a 位于外部嵌套函数的命名空间 print(a)

globals,全局变量,函数定义所在模块的命名空间

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a = 1
def fun():# 需要通过 global 指令来声明全局变量global a# 修改全局变量,而不是创建一个新的 local 变量a = 2

builtins,内建模块的命名空间。

Python 在启动的时候会自动为我们载入很多内建的函数、类,比如 dict,list,type,print,这些都位于 __ builtin__ 模块中, 可以使用 dir(__ builtin__) 来查看。

这也是为什么我们在没有 import任何模块的情况下,就能使用这么多丰富的函数和功能了。

在Python中,有一个内建模块,该模块中有一些常用函数;在Python启动后,且没有执行程序员所写的任何代码前,Python会首先加载该内建函数到内存。

另外,该内建模块中的功能可以直接使用,不用在其前添加内建模块前缀,其原因是对函数、变量、类等标识符的查找是按LEGB法则,其中B即代表内建模块比如:内建模块中有一个abs()函数,其功能求绝对值,如abs(-20)将返回20。

python作用域与LEGB规则相关推荐

  1. Python入门--局部变量,全局变量,作用域,LEGB规则

    #变量的作用域-->程序代码能访问该变量的区域.变量可以被访问的范围.变量发挥作用的范围. #根据变量的有效范围,可分为 #局部变量 #1,在函数内定义并使用的变量,只在函数内部有效, # 局部 ...

  2. python中的LEGB 规则

    Python   使⽤    LEGB    的顺序来查找⼀个符号对应的对象 locals    ->   enclosing    function    ->   globals    ...

  3. python作用域——LEGB规则

    LEGB 规则 Python 使用 LEGB 的顺序来查找一个符号对应的对象 locals -> enclosing function -> globals -> builtins ...

  4. python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...

    P82-递归函数-阶乘计算案例 #使用递归函数计算阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)result=facto ...

  5. python作用域顺序排列_详解Python函数作用域的LEGB顺序

    本文为大家介绍了Python函数作用域的查找顺序,供大家参考,具体内容如下 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局 ...

  6. 全局变量和局部变量命名规则_变量范围和LEGB规则

    全局变量和局部变量命名规则 PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) In the beginning, I assume that you know ho ...

  7. 对于python 作用域新的理解

    今天看Python习题,看到如下题目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()]) # ...

  8. python作用域初探

    python作用域初探 前言:在正式探讨前先抛出几个基本的概念,这几个概念是官方文档中有声明的概念,不过这些概念都包含有自己的一些理解,所以难免有些不太准确,请大家多多指正. 1.基本概念:     ...

  9. python作用域详解

    命名空间 一个程序具有多个变量,为了更好的组织这些变量,更好的控制变量之间的命名冲突以及更好的管理变量在程序中的角色,python使用了命名空间这样一种结构来实现这个目的.python中,一个命名空间 ...

最新文章

  1. vue 如何处理两个组件异步问题_Vue动态异步组件实现思路及其问题
  2. 30秒的PHP代码片段(2)数学 - Math
  3. 一周小程序学习 第1天
  4. layui 动态添加 表格数据
  5. Service基本组成 (一)
  6. 阿里云云效功能升级,支持快速创建多个应用的独立测试环境
  7. 虚拟化运维工具对金融行业的解决方案
  8. 织梦php echo 调用金币,dedecms实现任意页面调用当前会员信息的方法
  9. [VirtaulBox]网络连接设置
  10. JVM-类加载、GC回收机制
  11. 《Python简明教程》
  12. 基于新浪微博评论的情感分析
  13. 专技继续教育-使用tampermonkey刷课时(可自动跳转下一节)
  14. 计算机基础excel操作试题,大学计算机基础 excel测试题 求答案~~喵~~
  15. RTL8211千兆网PHY芯片LED灯配置
  16. java mongodb json_java向mongoDB中插入Json
  17. mac上metersphere本地开发环境搭建
  18. flask获取参数类型和请求响应
  19. undefined local variable or method `daemonize‘ for puma
  20. OAuth2.0实战

热门文章

  1. 并发学习笔记 (5)
  2. DataStage8.7连接远程Oracle数据库
  3. (转)十步精通新语言
  4. DataSet case sensitive issue
  5. 查看linux字符集命令,关于Linux字符集的查看及修改
  6. java月份去0_java – 使用月份解析日期而不是前导0
  7. CSDN博客的安全性为什么一直如此薄弱?
  8. SAP ABAP MARD和MARDH计算逻辑
  9. COND SWITCH 操作符
  10. SE11 仅以有限的方式支持生成的 DDL SQL 视图