免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2045 | 回复: 0
打印 上一主题 下一主题

python中的名字空间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-13 23:32 |只看该作者 |倒序浏览

在python中,名字空间是名字和实例的对应。当解释器启动时,内建名字的名字空间被建立,他们被看作是模块__builtin__的名字空间;当模块被载入的时候,模块的名字空间被建立;正在执行的文件或是交互命令的名字空间被看作是__main__的名字空间。

范围(scope)是python代码中可以直接使用某一名字空间的区域。

在执行的任何时间都至少有三个名字空间,一个是本地名字空间,包括最近函数内的名字;一个是模块的名字空间,包括模块中的全局变量;还有一个是__builtins__的名字空间。使用顺序由前到后。赋值都是在本地名字空间中发生的,import和函数定义的作用是将模块或是函数名绑定到本地名字空间中。


################################
看看文件的组织结构:
使用dir()可以查看某个模块定义的名字。

__name__中间总是当前模块的名字字符串。

在python中一个python文件就是一个模块(module)。使用模块这个名字是因为更好的体现了模块体现了名字空间,不像在c中间的那样名字空间和文件有关,但还是使用文件这个名字。

模块的集合就是包(package)。实际上就是文件的组合形成了目录一样(python中包和模块是一个类型)。与普通目录不同的是在每一个包的目录中都有一个__init__.py文件。这个文件可以是空的,也可以是有一些初始化代码的。用户可能需要在__init__.py中定义__all__。这个变量包含了包中间的公开的模块名(模块中的__all__包括了模块的API)。当使用from package import *时,被引入的是定义在__all__中的名字(使用import时,没有这个效果)。


#######################
下面看看关键字:
import的作用是有两部分,发现并初始化模块,然后是在本地名字空间中定义名字。语法如下:
import_stmt ::= "import" module ["as" name] ( "," module ["as" name] )*
  | "from" module "import" identifier ["as" name]
    ( "," identifier ["as" name] )*
  | "from" module "import" "(" identifier ["as" name]
    ( "," identifier ["as" name] )* [","] ")"
  | "from" module "import" "*"
module ::= (identifier ".")* identifier





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14802/showart_127733.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP