码迷,mamicode.com
首页 > 编程语言 > 详细

python之模块

时间:2015-06-01 11:16:25      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

 

技术分享
Graphics/
      __init__.py
      plot1d.py
      Primitive/
         __init__.py
         lines.py
         fill.py
         text.py
         ...
      Graph2d/
         __init__.py
         plot2d.py
技术分享

 

多个关系密切的模块应该组织成一个包,以便于维护和使用。这项技术能有效避免名字空间冲突。

创建一个名字为包名字的文件夹并在该文件夹下创建一个__init__.py 文件就定义了一个包。

无论一个包的哪个部分被导入, 在文件__init__.py中的代码都会运行.这个文件的内容允许为空,不过通常情况下它用来存放包的初始化代码

导入过程遇到的所有 __init__.py文件都被运行.因此 import Graphics.Primitive.fill 语句会顺序运行 Graphics 和 Primitive 文件夹下的__init__.py文件.

 

如下面这个语句只会执行Graphics目录下的__init__.py文件,而不会导入任何模块

import Graphics
Graphics.Primitive.fill.floodfill(img,x,y,color)  # 失败!

 不过既然 import Graphics 语句会运行 Graphics 目录下的 __init__..py文件,我们就可以采取下面的手段来解决这个问题:

# Graphics/__init__.py
import plot1d, Primitive, Graph2d

# Graphics/Primitive/__init__.py
import lines, fill, text, ...

 这样import Graphics语句就可以导入所有的子模块(只能用全名来访问这些模块的属性).

 

 

在lines.py中如果导入 text.py 、plot1d.py 、plot2d.py

from . import text  
from . import plot1d
from ..Graph2d import plot2d

 

 

 

2015-06-01

python之模块

标签:

原文地址:http://www.cnblogs.com/whuyt/p/4543389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!