python命名空间总结

本文详细介绍了Python中的命名空间,包括其作为名称到对象映射的特性、三种主要的命名空间类型(内置、全局、局部)以及命名空间的生命周期。此外,还探讨了作用域的概念,解释了Python中的LEGB作用域规则,并提到了`global`和`nonlocal`关键字在管理不同作用域变量中的应用。
摘要由CSDN通过智能技术生成

python命名空间总结

1.命名空间

官方文档:

A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。

命名空间是从名称(name)到对象(object)的映射(map),大多数的命名空间都是通过python字典来实现的。当一个name映射到一个object上时,我们说这个name和这个object有绑定(bind)关系,或者说这个name指向这个object

Python 的名字实际上是⼀个字符串对象,它和所指向的目标对象——起在名字空间中构成⼀一项 {name: object} 关联。globals()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wBjROLx1-1586426014108)(C:\Users\zhourong\AppData\Roaming\Typora\typora-user-images\1586425003007.png)]

**设计哲学:python中的一切都是对象(object),包括function、module(模块)、class、package本身。用name给每个object起个名字。一个name只能有一个object,一个object可以有多个name。**每一个object、如(module、class、function)一个instance ,都有自己的namespace。namespace是动态创建的,每一个namespace的生存时间也不一样。

删除变量:删除一个变量的意思是从最内部的namespace清除一个name和object的绑定(bind)关系,如果没有其他name和这个对象bind,那么才是真正删除object。

python是一种强类型、动态语言。强类型是指:每一个对象都有一个类型。动态类型是指每个变量都不用声明,可以指向任何类型的对象、或者叫变量为名字(name)更为合适。

如下图所示,相同的对象名称可以存在于多个命名空间中。

一般有三种命名空间

  • 内置名称(built-in names),Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
  • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其他导入的模块、模块级的变量和常量
  • 局部名称(local names),函数中定义的名称,记录了函数的变量、包括函数的参数和局部定义的变量

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值