Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python的命名空间

python的命名空间

作者头像
狼啸风云
修改于 2022-09-03 13:57:33
修改于 2022-09-03 13:57:33
1K0
举报

Python中,所有的名字都存在一个空间中,它们在该空间中存在和被操作——这就是命名空间。它就像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面找到相应的对象。

【定义】

名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。

【分类】

python程序执行期间会有2个或3个活动的命名空间(函数调用时有3个,函数调用结束后2个)。按照变量定义的位置,可以划分为以下3类:

Local,局部命名空间,每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的入参、内部定义的局部变量。

Global,全局命名空间,每个模块加载执行时创建的,记录了模块中定义的变量,包括模块中定义的函数、类、其他导入的模块、模块级的变量与常量。

Built-in,python自带的内建命名空间,任何模块均可以访问,放着内置的函数和异常。

【生命周期】

Local(局部命名空间)在函数被调用时才被创建,但函数返回结果或抛出异常时被删除。(每一个递归函数都拥有自己的命名空间)。

Global(全局命名空间)在模块被加载时创建,通常一直保留直到python解释器退出。

Built-in(内建命名空间)在python解释器启动时创建,一直保留直到解释器退出。

各命名空间创建顺序:python解释器启动 ->创建内建命名空间 -> 加载模块 -> 创建全局命名空间 ->函数被调用 ->创建局部命名空间

各命名空间销毁顺序:函数调用结束 -> 销毁函数对应的局部命名空间 -> python虚拟机(解释器)退出 ->销毁全局命名空间 ->销毁内建命名空间

python解释器加载阶段会创建出内建命名空间、模块的全局命名空间,局部命名空间是在运行阶段函数被调用时动态创建出来的,函数调用结束动态的销毁的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Write xlsx with Openpyxl
Openpyxl 是一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的开源库
franket
2021/08/11
1.4K0
Auto Generate Command Line
Openpyxl 是一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的开源库
franket
2021/08/11
3300
ETL CSV to Elasticsearch
当有大量数据要从 CSV 导入到 Elasticsearch 中时一般有两种方式来完成
franket
2021/08/11
2.4K0
Install Cobbler
可以实现 Linux 的自动化部署与初始化配置,在需要安装大量 OS 的场景下,可以极大提升效率
franket
2021/08/11
1.3K0
Centos7使用yum安装 pip 、ipython
仅供学习参考 安装epel扩展源 yum -y install epel-release 执行如下: [root@server01 work]# yum -y install epel-release Loaded plugins: fastestmirror Determining fastest mirrors * base: centos.ustc.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com base
Devops海洋的渔夫
2019/05/31
2.5K0
Install Jumpserver
Jumpserver 基于 Python / Django 进行开发,遵循 Web 2.0 规范,配备了 Web Terminal 解决方案
franket
2021/08/10
1.2K0
x0vncserver 共享桌面
有些场景下,需要进行桌面演示,在 windows 里有很多软件可以满足此类需求,那在 Linux 里该如何实现呢
franket
2021/08/12
3K0
揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱
正如文章标题所说 揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱
AXYZdong
2020/10/29
37.3K2
揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱
Keepalived LVS NAT
LVS 只实现到了四层,Keepalived 可以实现七层的简单检查,Keepalived 可以通过预设的检查逻辑来管理 LVS 配置,从而实现对 LVS 自动且动态的调配,让整个 LB 系统更加灵活且健壮
franket
2021/08/10
1.6K0
Config Client of OpenVPN on linux
OpenVPN 是一款开源的 VPN(Virtual private network) 软件
franket
2021/08/11
5.3K0
LVS NAT
LVS(Linux Virtual Server) 是一款开源的 LB(load balancing) 软件
franket
2021/08/10
3.4K0
LVS DR
LVS(Linux Virtual Server) 是一款开源的 LB(load balancing) 软件
franket
2021/08/10
9790
Install OpenResty
OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项
franket
2021/08/11
1.1K0
Install Saltstack
类似的工具还有 Puppet、Chef、Ansible,他们之间可以相互替代,但是哪一个更好,我就不在此引发圣战了
franket
2021/08/11
6630
CRUD Elasticsearch with Python
这里分享一下 Python Elasticsearch Client 简单的 CRUD API
franket
2021/08/11
7080
Install Tomcat
Tomcat 是一款开源的 Java Servlet 实现,简单来说就是一个 java 应用解析容器
franket
2021/08/11
5380
Install PostgreSQL
PostgreSQL 的影响力越来越大了,虽然长期居于数据库排行榜的第四名(前三分别为 oracle, mysql, sqlserver),不过近三年来(2015-2018年),却是受关注涨幅最大的数据库,并且长期保持稳步增涨的态势,可能与其丰富的特性迎合了现代互联网的发展需求有一定关联
franket
2021/08/11
2.4K0
Install phpMyAdmin
参考 phpMyAdmin文档 和 How to install Apache, PHP 7.2 and MySQL on CentOS 7.4 (LAMP)
franket
2021/08/11
3K0
安装 OpenShift Origin
这两年容器技术太火了,很多大公司后台的应用都完成了容器化的转变,容器化代表了 DevOps 领域的一个未来趋势
franket
2021/08/12
1.4K0
Install LAMP
由 Linux 提供运行环境,Mysql 提供关系型存储,Apache 提供 Web 服务,PHP 完成应用逻辑
franket
2021/08/11
2K0
相关推荐
Write xlsx with Openpyxl
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档