python中的命名空间

命名空间是名称到对象的一种映射关系,在Python中是通过字典来实现命名空间的。Python中的命名空间可以分为三种:内置命名空间(Built-in namespace)全局命名空间(Global namespace)以及局部命名空间(Local namespace)。同一个命名空间下不能有相同的名称,不同的命名空间下可以有相同的名称,这类似于相同的文件目录下不能有同名文件。三者的关系如下图所示。
在这里插入图片描述

内置命名空间

内置命名空间中常见的名称有print(),int()等,它们都是python自带的。

全局命名空间

全局命名空间中的名称是模块中定义的名称,包括模块中的类、其它导入的模块以及模块级的变量和常量。它的生命周期与这个模块的生命周期相同。

局部命名空间

函数中定义的名称,包括函数的参数和函数内部定义的变量。它的生命周期与所在函数的生命周期一致。

举例
num_a = 3  #全局名称
num_b = 5  #全局名称
mul = 3   #全局名称
def cal_ab(num_1,num_2):
  global mul   #引用全局名称中的mul
  num_all =(num_1 + num_2)*mul   #局部名称
  print(num_all)    #内置名称
cal_ab(num_a,num_b)

输出结果

24
print(num_all)

输出结果

NameError                                 Traceback (most recent call last)
<ipython-input-4-b5190f2c7c4e> in <module>()
      7   print(num_all)    #内置名称
      8 cal_ab(num_a,num_b)
----> 9 print(num_all)

NameError: name 'num_all' is not defined

注意,我们无法从外部命名空间访问内部命名空间的对象,但是可以通过global从局部命名空间访问全局命名空间的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值