| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2481 人关注过本帖
标题:import 初探之一 —— 导入 Package
只看楼主 加入收藏
好学
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:622
专家分:318
注 册:2004-5-4
结帖率:50%
收藏
 问题点数:0 回复次数:1 
import 初探之一 —— 导入 Package
简单地探讨一下 Python 中的 import,它的用法。这是第一篇。
                                                                                                                —— 朋友,你从哪里来?

酒壮熊人胆
        两杯红酒下肚,乘兴便打开这个盒子 —— import。
        众所周知,import 也许是 Python 中最平淡无奇、最道貌岸然的东西了。它总是用一种呆滞木然的眼神看着身怀绝技的道友们玩出各种花招、翻云覆雨,却从来是不动声色……这却越来越像是一个阴谋了!

        曾经,我也在江湖上听说过 import,它似乎是 Python 的基本语句,用于导入包(Package),或者模块(Module)到当前的作用域里来,这样我们就可以在程序中调用这些包和模块了。好象还真没见它做过什么出格的事情来呢。

        通常模块是后缀为 ".py"、".pyo"、".pyc"、".pyd"、".so"、".dll" 这样的文件。啊哈,导入模块还是挺简单的,就连我这种初学者都烂熟于心咯。只是那个 Package……


包通常总是一个目录,目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。差不多就像这样吧:

Package1/ __init__.py

 Module1.py

 Module2.py

 Package2/ __init__.py

 Module1.py

 Module2.py


我们可以就这样导入一个包:

import Package1


或者调入一个子模块和子包:

程序代码:
from Package1 import Module1

from Package1 import Package2

import Packag1.Module1

import Packag1.Package2


可以深入好几层包结构:

from Package1.Package2 import Module1

import Package1.Package2.Module1


大致就这样吧,我觉得,包的精髓应该是在 __init__.py 这个文件之中的。

__init__.py 文件
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
>>> import Package1

>>> Package1.Module1

Traceback (most recent call last):
 File "<pyshell#1>", line 1, in ?
 Package1.Module1
AttributeError: 'module' object has no attribute 'Module1'

我们需要在 __init__.py 里把 Module1 预先导入:

#文件 __init__.py

import Module1


测试:

>>> import Package1

>>> Package1.Module1

<module 'Package1.Module1' from
'Module.pyc'>

__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:

from Package1 import *


这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:

#文件 __init__.py

__all__ = ['Module1', 'Module2', 'Package2']


测试:

>>> from Package1 import *

>>> Module2

<module 'Package1.Module2' from 'Module.pyc'>


__init__.py 文件会在导入时被执行。

转自:http://www.
搜索更多相关主题的帖子: 初探 Package import 
2010-03-03 23:51
cuinan128
Rank: 2
等 级:论坛游民
帖 子:20
专家分:55
注 册:2010-3-24
收藏
得分:0 
路過進來看看  希望可以多認識一些朋友

[url=http://www.]mbt sale[/url]
2010-03-24 09:09
快速回复:import 初探之一 —— 导入 Package
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035370 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved