python名称空间namespace和作用域

Python的变量定义后都有自己的作用域,每个作用域内都有名字空间。注意??,python所有的变量和函数都是先定义,后使用!!

名称空间就是变量名称与对象的关联关系。Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象。直接访问一个变量,会在四个namespace中逐一搜索,即:Local(innermost)、Enclosing、Global(next-to-last)、Built-in(outtermost)。

1、Local(innermost):局部变量,函数内部的变量

2、Enclosing:也是局部变量,闭包函数变量。

3、 Global:全局变量,脚本文件无缩进的变量。

4、Built-in(outtermost):Python内置的变量和关键词

python使用的搜索顺序是:1-2-3-4

Local -> Enclosing -> Global -> Built-in

每个函数都有着自已的名称空间,叫做局部名称空间

每个局部名称空间的外部的名称空间,叫做封闭区域;如内嵌函数的外部函数的局部名称空间,就是这个内嵌函数的封闭区域。

每个模块拥有它自已的名称空间,叫做全局名称空间

还有就是内置名称空间,任何模块均可访问它,它存放着内置的函数和异常。

python运行机制:

当有一个变量在 local 域中找不到时,Python会找上一层的作用域,即 enclosing 域(该域不一定存在)。
enclosing 域还找不到的时候,再往上一层,搜索模块内的 global 域。最后,会在 built-in 域中搜索。
对于最终没有搜索到时,Python会抛出一个 NameError 异常。

时间: 2024-12-31 18:18:32

python名称空间namespace和作用域的相关文章

Python--高阶函数、函数嵌套、名称空间及变量作用域、闭包、装饰器

1.高阶函数(map/reduce/filter) 高阶函数是指函数的参数可以是函数 这篇总结几个常用的高阶函数:map/reduce/filter map函数.reduce函数.filter函数都是Python中的内建函数. map函数 map函数的作用是将一个函数作用于一个序列的每一个元素,一行代码即可完成,不需要用我们平常喜欢用的循环.map将运算进行了抽象,我们能一眼就看出这个函数是对一个序列的每个元素进行了同样的一个操作.map()函数接收两个参数,一个是函数,一个是Iterable,

函数的嵌套,名称空间,以及作用域

函数的嵌套,名称空间,以及作用域 1.调用函数的三种形式 def func(): print('from func') func()#第一种函数名加括号 def max_2(x,y): if x > y: return x else: return y res = max_2(10,3) print(res)#表达式去调用 def max_2(x,y): if x > y: return x else: return y res = max_2(10,max(2,3)) print(res)#

Python 名称空间与作用域

名称空间:存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方 一.名称空间又分为: 内置名称空间:在python解释器启动时产生,存放一些python内置的名字 全局名称空间:在执行文件时产生,存放文件级别定义的名字 局部名称空间:在执行文件的过程中,如果调用了函数,则会产生该函数的局部名称空间 用来存放该函数内定义的名字,该名字在函数调用时生效,在函数调用结束后失效 二.加载顺序 加载顺序:内置--->全局--->局部 x=1 def func():#全局 y=2 def f1

python名称空间

名称空间 在python解释器开始执行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表示这个函数存在了, 至于函数内部的变量和逻辑, 解释器是不关心的. 也就是说一开始的时候函数只是加载进来, 仅此而已, 只有当函数被调用和访问的时候, 解释器才会根据函数内部声明的变量来进行开辟变量的内部空间. 随着函数执行完毕, 这些函数内部变量占用的空间也会随着函数执行完毕而被清空. def fun

Python名称空间和闭包

一.名称空间 1.定义:又名 name space,顾名思义,就是存放名字的地方.比如:若变量x = 1,1存放在内存中, 而名称空间正是存放名字x与1绑定关系的地方. 2.分类: locals : 函数内的名称空间,包括局部变量和形参 globals: 全局变量 builtins:内置模块的名字空间 注意:不同变量的作用域就是由这个变量所在的命名空间决定的. 3.作用域(范围) 全局范围:全局有效 局部范围:局部有效 查看作用域方法:globals(),locals() 4.作用域的查找顺序:

Python名称空间的理解

python程序执行期间会有3个活动的命名空间,按照变量定义的位置,可以划分为以下3类: Local,局部命名空间,每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参.内部定义的局部变量. Global,全局命名空间,每个模块加载执行时创建的,记录了模块中定义的变量,包括模块中定义的函数.类.其他导入的模块.模块级的变量与常量. Built-in,python自带的内建命名空间,任何模块均可以访问,放着内置的函数和异常. 程序执行过程访问名称空间顺序是Local-->Globa

Python开发【第XXX篇】----函数 -名称空间与作用域

一:函数嵌套,在调用一个函数的过程中,又调用了其他函数 def bar(): print('from bar')def foo(): print('from foo') bar()foo()通过函数的嵌套使用,分解成最小的操作,一次调用 二:函数的嵌套定义:在一个函数的内部,又定义了一个函数 def f1(): x = 1 def f2(): print('from f2') f2()f1() 三:名称空间,存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方内置名称空间:pytho

08 名称空间与作用域

一.名称空间namespace:存放 名字与值内存地址绑定关系 的地方 1.内置名称空间(Built-in):存放python自带的名称与值的绑定体,len.  print. sum等内置方法的名字,注意关键字比如if.while...不存放在其中 产生:在python解释器启动时创建 销毁:python解释器退出时关闭 2.全局名称空间(Global):当打开一个文件然后执行时,全局名称空间记录了文件中定义的变量,包括此文件中定义的函数.类.其他导入的模块.模块级的变量与常量. 产生:在.py

函数对象,函数的嵌套,名称空间与作用域,闭包,装饰器,迭代器,内置函数

一,函数对象 函数对象:函数是第一类对象,即函数可以当做数据传递 1,可以被引用 2,可以做参数的传递 3,返回值可以是函数 4,可以当作容器类型的元素 二,函数嵌套 1,函数的嵌套调用 2,函数的嵌套定义 三,名称空间与作用域 名称空间:存放名字的地方叫名称空间,存放这些值与名字的绑定关系 查看内置名称的两种方法: 三种名称空间 1,内置名称空间:随着python解释器的启动而产生 2,全局名称空间:文件的执行会产生全局名称空间,指的是文件级别定义的名字都会放入该空间 3,局部名称空间:调用函