python命名空间打印_Python-命名空间

本文详细介绍了Python中的命名空间和作用域概念,包括全局命名空间、局部命名空间和内置命名空间的加载顺序及取值规则。通过示例解释了`global`和`nonlocal`关键字的使用,说明如何在不同作用域中访问和修改变量。同时,讨论了函数`globals()`和`locals()`的作用,帮助理解Python中的变量管理。
摘要由CSDN通过智能技术生成

命名空间

在python解释器开始执行行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就

把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内

存, 表示这个函数存在了了, 至于函数内部的变量和逻辑, 解释器是不关心的.也就是说一开始

的时候函数只是加载进来, 仅此而已, 只有当函数被调用和访问的时候, 解释器才会根据函数

内部声明的变量来进行行开辟变量的内部空间.随着函数执行行完毕, 这些函数内部变量占用的空

间也会随着函数执行行完毕而被清空.

我们给存放名字和值的关系的空间起一个名字叫: 命名空间.我们的变量在存储的时候就是存储在这片空间中的.命名空间分类:

1.全局命名空间 --> 我们直接在py文件中, 函数外声明的变量都属于全局命名空间

2.局部命名空间 --> 在函数中声明的变量会放在局部命名空间

3.内置命名空间 --> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内置命名空间

加载顺序:

1.内置命名空间

2.全局命名空间

3.局部命名空间(函数被执⾏行行的时候)

取值顺序:

1.局部命名空间

2.全局命名空间

3.内置命名空间

作用域:

1.全局作用域: 全局命名空间 + 内置命名空间

2.局部作用域: 局部命名空间

函数:

globals,通过globals()函数来查看全局作用域中的内

locals,通过locals()函数来查看局部作用域中的变量和函数信息

gloabal, nonlocal关键字

gloabal表⽰. 不再使⽤用局部作⽤用域中的内容了了. ⽽而改⽤用全局作⽤用域中的变量

1 a = 1

2 deffunc():3 globala4 print(a)

global

nonlocal表示在局部作⽤用域中, 调⽤用⽗父级命名空间中的变量.

1 #nonlocal

2 a =03 defouter():4 a = 1

5 definner():6 a = 2

7 definner2():8 nonlocal a #声明了一个上面第一层局部变量

9 a += 1 #不可变数据类型的修改

10 inner2()11 print('##a## :', a)12 inner()13 print('**a** :',a)14

15 outer()16 print('全局 :',a)17 ###a## : 3

18 #**a** : 1

19 #全局 : 0

nonlocal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值