Python   使⽤    LEGB    的顺序来查找⼀个符号对应的对象

locals    ->   enclosing    function    ->   globals    ->    builtins

局部变量———闭包空间———全局变量———内建模块

a    =    1        #    全局变量   globals

def   fun():

a    =    2        #    闭包变量   enclosing

def    inner_fun():

a    =    3        #    局部变量    locals

print("a=%d"    %    a)      # 内建模块 builtins

return    inner_fun

f    =    fun()

f()

locals,当前所在命名空间(如函数、模块),函数的参数也属于命名空间内的变量 enclosing,外部嵌套函数的命名空间(闭包中常见)

def    fun1():

a    =    10

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

print(a)

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

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规则

    作用域 什么是命名空间 比如有一个学校,有10个班级,在7班和8班中都有一个叫"小王"的同学,如果在学校的广播中呼叫"小王"时,7班和8班中的这2个人就纳闷了, ...

  2. 浅谈Python中的编码规则

    注:本人用Python3.4作为学习版本,以下学习心得只适用于Python3.4. 之前拜读了金角大王Alex关于编码的解答,收获颇多.特此致谢,以下仅谈一谈作为一个初学者,对编码的理解. 我所了解的 ...

  3. python中if缩进规则_Python缩进与if语句 空格的魅力

    缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...

  4. Python中的命名规则

    一.Python项目组成 1.顶层的包(类似文件夹). 2.各个模块(Python file). 3.类(class 定义类). 4.变量和方法(函数).其中,方法中也可以定义变量(方法中的变量). ...

  5. python中类型转换的规则_Python 类型转换指南

    一.int型 支持转换为 int 类型的,仅有 float.str.bytes,其他类型均不支持. 1.float -> int 会去掉小数点及后面的数值,仅保留整数部分. 2.str -> ...

  6. 理解Python中的LEGB原则

    基础知识: 命名空间:python的命名空间是对变量名的分组划分.不同组的相同名称的变量视为两个独立的变量,因此隶属于不同分组(即命名空间)的变量名可以重复.所以python的局部变量名称可以和全局变 ...

  7. python中int函数规则_python数字规则和内建函数

    python字符串补充: 字符串对象须当作参数的方法(非str.capitalize()形式): 1.str(obj)--将对象转化为字符串 2.len(str)--计算字符串长度 3.max(str ...

  8. python中列表相加规则_在Python字典列表中使用公共键/值求和值

    如果有人问过这个问题,请道歉.我在这方面是个新手,但我已经看过一些其他的问题/答案,它们看起来和我的很相似,但找不到一个能起作用的.我试过Counter,但似乎不知道如何保存ID键/值.在 我试图用一 ...

  9. python中int函数规则_python中int函数的用法

    int(x)函数(实际上是一个类,初学者可以将其当成一个函数)中的参数x可以是一个数值,也可以是一个字符串. 如果x是一个数值,那么这个函数就是一个向0取整的函数 ,比如 如果x是一个字符串,intx ...

最新文章

  1. 07-图6 旅游规划 (25分)(以此感谢zyx佬)
  2. 归纳推理测试没做完_敷完面膜不要做4件事,不但敷了面膜没效果,皮肤还变差了...
  3. 把大核卷积拆成三步,清华胡事民团队新视觉Backbone刷榜了,集CNN与ViT优点于一身...
  4. WebSocket相关
  5. 模块化妙用!用vue3实现一个鼠标追踪器和异步加载组件
  6. 组装一台计算机 java_如何在同一台计算机上安装多个Java版本
  7. metrics的timer功能在java项目中的使用方法
  8. 【转】Linux内核报文收发
  9. 清理SQL Server中的旧代码和未使用的对象
  10. Zabbix email 配置
  11. 基于Python3-Pygame的乒乓球游戏
  12. 【三维路径规划】基于matlab麻雀搜索算法无人机三维路径规划【含Matlab源码 171期】
  13. 设计教务管理系统MySQL,数据库设计实例 教务管理系统
  14. linux下各种后缀名文件的压缩和解压缩
  15. 浙大PAT练习题1006
  16. 作业三-读书app原型设计
  17. 向量积和数量积常用知识
  18. js md5加密 无法md5解密
  19. 基于Jsp+Servlet的宿舍管理系统(JavaWeb毕业设计源码)
  20. 怎么改造计算机玩游戏,大神请收下我的膝盖 牛人将红白机改造成PC玩游戏

热门文章

  1. CCF 201712-3 Crontab
  2. Oracle Golden Gate概要
  3. Python--递归
  4. 获取要素集中字段的唯一值
  5. 谈谈.NET MVC QMVC高级开发
  6. vector中的reserve() 与 resize()
  7. 删除list中的一个节点
  8. “元宇宙” 是什么东西?
  9. 如何向开源社区奉献代码
  10. 邓总的vim配置,需要的自己拿走~