python 命名空间和作用域

二者的关系命名空间在python解释器中是以字典的形式存在的,是以一种可以看得见摸得着的实体存在的。大部分的命名空间都是由字典来实现的,里面存储的是键就是名字,值就是名字所指向的位于内存中的对象。作用域是python解释器定义的一种规则,该规则确定了运行时变量查找的顺序,是一种形而上的虚的规定。

命名空间有三种:

1.内置命名空间:里面存放的是python解释器一加载进内存就能直接使用的变量名,函数名,关键字等。python解释器已启动就会在内存空见中开辟一个内置命名空间。

2.全局命名空间:里面存放的是除函数里面的所有用户自定义的变量名和函数名,在程序从上到下执行的过程中会依次加载进全局命名空间。

3.局部命名空间:里面存放的是函数内部的所有用户自定义的变量名和函数名,在执行(调用)函数的时候加载进局部命名空间,当函数执行完后这个明明空间就消失了。(每一个递归函数都拥有自己的命名空间)

作用域有两种:

1.全局作用域:作用在全局,内置命名空间和全局命名空间里面的名字都属于全局作用域。

2.局部作用域:作用在局部,局部命名空间的名字属于全局作用域。

 

global关键字

对于属于全局作用域的不可变数据类型,在局部作用域中可以直接引用,但不能直接修改,修改前应先用global关键字进行声明。

a = 1
def test():
    a = 2	
test()
print(a)  # 1
a = 1
def test():
    global a
    a = 2
test()
print(a)  # 2

globals和locals内置函数

globals:获取全局作用域里面的所有名字

locals:获取全局还是局部作用域里面的名字由调用locals的位置决定

a = 1
def test():
    s1 = "s1"
    s2 = "s2"
    print(globals())
    print(locals())
test()
print(globals())
print(locals())

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值