python编写查找函数_Python函数编程——名称空间

Python函数编程——名称空间

名称空间又名name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?称空间正是存放名字x与1绑定关系的地方。

Python里面有很多名字空间,每个地方都有自己的名字空间,互不打扰,不同空间中的两个相同名字的变量之间没有任何关系。

名称空间有4种:LEGB

locals:函数内部的名字空间,一般包括函数的局部变量以及形式参数。

enclosing function:在嵌套函数中外部函数的名字空间,若fun2嵌套在fun1里,对fun2来说,fun1的名字空间就enclosing。

globals:当前的模块空间,模块就是一些py文件。也就是说,globals()类似全局变量。

builtins:内置模块空间,也就是内置变量或者内置函数的名字空间。

不同变量的作用域不同就是由这个变量所在的名称空间所决定的。

作用域即范围

全局范围:全局存活,全局有效。

局部范围:临时存活,局部有效。

查看作用域方法:globals(),locals()

作用域查找顺序

当程序引用某个变量的名字时,就会从当前名字空间开始搜索。搜索顺序规则便是:LEGB。即locals -> enclosing function -> globals ->builtins。一层一层的查找,找到了之后,便停止搜索,如果最后没有找到,则抛出NameError的异常。

level = 'L0'

n = 22

def func():

level = 'L1'

n = 33

print(locals())

def outer():

n = 44

level = 'L2'

print("outer:",locals(),n)

def inner():

level = 'L3'

print("inner:",locals(),n) #此外打印的n是多少?

inner()

outer()

func()

输出

{'n': 33, 'level': 'L1'}

outer: {'level': 'L2', 'n': 44} 44

inner: {'level': 'L3', 'n': 44} 44

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值