python中的LEGB 规则
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 规则相关推荐
- python作用域与LEGB规则
作用域 什么是命名空间 比如有一个学校,有10个班级,在7班和8班中都有一个叫"小王"的同学,如果在学校的广播中呼叫"小王"时,7班和8班中的这2个人就纳闷了, ...
- 浅谈Python中的编码规则
注:本人用Python3.4作为学习版本,以下学习心得只适用于Python3.4. 之前拜读了金角大王Alex关于编码的解答,收获颇多.特此致谢,以下仅谈一谈作为一个初学者,对编码的理解. 我所了解的 ...
- python中if缩进规则_Python缩进与if语句 空格的魅力
缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...
- Python中的命名规则
一.Python项目组成 1.顶层的包(类似文件夹). 2.各个模块(Python file). 3.类(class 定义类). 4.变量和方法(函数).其中,方法中也可以定义变量(方法中的变量). ...
- python中类型转换的规则_Python 类型转换指南
一.int型 支持转换为 int 类型的,仅有 float.str.bytes,其他类型均不支持. 1.float -> int 会去掉小数点及后面的数值,仅保留整数部分. 2.str -> ...
- 理解Python中的LEGB原则
基础知识: 命名空间:python的命名空间是对变量名的分组划分.不同组的相同名称的变量视为两个独立的变量,因此隶属于不同分组(即命名空间)的变量名可以重复.所以python的局部变量名称可以和全局变 ...
- python中int函数规则_python数字规则和内建函数
python字符串补充: 字符串对象须当作参数的方法(非str.capitalize()形式): 1.str(obj)--将对象转化为字符串 2.len(str)--计算字符串长度 3.max(str ...
- python中列表相加规则_在Python字典列表中使用公共键/值求和值
如果有人问过这个问题,请道歉.我在这方面是个新手,但我已经看过一些其他的问题/答案,它们看起来和我的很相似,但找不到一个能起作用的.我试过Counter,但似乎不知道如何保存ID键/值.在 我试图用一 ...
- python中int函数规则_python中int函数的用法
int(x)函数(实际上是一个类,初学者可以将其当成一个函数)中的参数x可以是一个数值,也可以是一个字符串. 如果x是一个数值,那么这个函数就是一个向0取整的函数 ,比如 如果x是一个字符串,intx ...
最新文章
- 07-图6 旅游规划 (25分)(以此感谢zyx佬)
- 归纳推理测试没做完_敷完面膜不要做4件事,不但敷了面膜没效果,皮肤还变差了...
- 把大核卷积拆成三步,清华胡事民团队新视觉Backbone刷榜了,集CNN与ViT优点于一身...
- WebSocket相关
- 模块化妙用!用vue3实现一个鼠标追踪器和异步加载组件
- 组装一台计算机 java_如何在同一台计算机上安装多个Java版本
- metrics的timer功能在java项目中的使用方法
- 【转】Linux内核报文收发
- 清理SQL Server中的旧代码和未使用的对象
- Zabbix email 配置
- 基于Python3-Pygame的乒乓球游戏
- 【三维路径规划】基于matlab麻雀搜索算法无人机三维路径规划【含Matlab源码 171期】
- 设计教务管理系统MySQL,数据库设计实例 教务管理系统
- linux下各种后缀名文件的压缩和解压缩
- 浙大PAT练习题1006
- 作业三-读书app原型设计
- 向量积和数量积常用知识
- js md5加密 无法md5解密
- 基于Jsp+Servlet的宿舍管理系统(JavaWeb毕业设计源码)
- 怎么改造计算机玩游戏,大神请收下我的膝盖 牛人将红白机改造成PC玩游戏