博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python作用域和名称空间
阅读量:5264 次
发布时间:2019-06-14

本文共 710 字,大约阅读时间需要 2 分钟。

名称空间管理名称到对象的映射,目前在python中名称空间多以字典的形式实现,但我们不应该这样记忆,因为在以后的版本中可能会更改实现方式。名称空间的例子有:
built-in names, the global names in a module, the local names in a function invocation. In a sense the set of attributes of an object also form a namespace. 
不同名称空间内的名字没有任何关系。
任何以点号访问的名字,我们都可以称之为
attribute。严格地说,模块内的名字就是模块的属性,模块内定义的全局变量和模块本身的属性拥有相同的名称空间。
名称空间在不同的时间构造,而且拥有不同的生命周期。
built-in名称空间在python解释器启动的时候生成,而且永远不会被删除。
函数的局部名称空间在函数调用的时候生成,当函数返回或抛异常时删除,每次递归都会生成新的名称空间。
作用域是指能直接访问名称空间的python文法块。直接访问的意思是不通过全限定名来访问。
nonlocal 最近的外层
global 模块的全局
这两个关键字是关于重绑定的,与读无关,只与赋值有关
在Python中,确实只有在执行def和class语句的时候会产生新的作用域,至少根据我现在对Python源码的认识是这样的。而if,try,for等语句的执行不会产生新的作用域。

转载于:https://www.cnblogs.com/zhujianxipan/archive/2013/03/12/3146860.html

你可能感兴趣的文章
sql语句中的left join,right join,inner join的区别
查看>>
Xcode 快捷键及代码格式化
查看>>
12010 解密QQ号(队列)
查看>>
javascript performence
查看>>
[转载]背包问题九讲(九)
查看>>
【端口占用】系统占用80端口解决
查看>>
web工程中URL地址的推荐写法
查看>>
布尔代数
查看>>
软件测试常见风险分析
查看>>
python:利用configparser模块读写配置文件
查看>>
3675: [Apio2014]序列分割
查看>>
搜索与回溯算法
查看>>
pushlet的简单使用
查看>>
Com Excel组件释放资源关闭进程总结
查看>>
AnsibleTower
查看>>
无损扩容,调整Centos服务器分区大小,简明扼要
查看>>
开通博客的感想和规划
查看>>
MapReduce 多表连接
查看>>
python包安装和使用机制
查看>>
Nginx/LVS/HAProxy负载均衡软件的优缺点
查看>>