WEB开发网
开发学院软件开发Python [Python 学习笔记] 10: Module 阅读

[Python 学习笔记] 10: Module

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示:Python 的 Module 更像 Object Pascal Unit,和 C# namespace 那种纯粹作为编译器名称识别符不同,[Python 学习笔记] 10: Module,Module 本身就是一种类型,>>>importtypes>>>types.ModuleTy

Python 的 Module 更像 Object Pascal Unit,和 C# namespace 那种纯粹作为编译器名称识别符不同,Module 本身就是一种类型。

>>> import types
>>> types.ModuleType
<type 'module'>
>>> type(types)
<type 'module'>

我们可以在 Module 中定义变量、方法、类以及其他执行代码。

i = 15
def test(): pass
class Class1: pass
print "Hello, World"

---------------------

通过 __name__ 可以判断当前 module 是被 import 还是 execute。

if __name__ == "__main__":
 print "Execute"
else:
 print "Import"

---------------------

可以使用 dir() 方法查看 module 的成员。

>>> import sys
>>> dir(sys)
...
>>> dir()
['Class1', '__builtins__', '__doc__', '__name__', 'i', 'sys', 'test']

---------------------

作为引入机制,我们可以用两种方法来导入其他 module 成员。

>>> import sys
>>> sys.version
'2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]'
>>> from sys import version
>>> version
'2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]'
>>> from sys import *
>>> winver
'2.5'

除了使用 import 关键字以外,我们还可以使用内建函数 __import__() 来导入 module。两者的区别是,import 后面跟的必须是一个类型(type),而__import__() 的参数是一个字符串,这个字符串可能来自配置文件,也可能是某个表达式计算结果,这显然为我们提供了更大的灵活性。

>>> m1 = __import__("sys")
>>> type(m1)
<type 'module'>
>>> m1.winver
'2.5'

使用 import 导入 module 时,Python 会将要导入的 module 编译成字节码,这种二进制文件(.pyc)虽然没有提高执行速度,但能加快装载速度。我们还可以调用相关方法来完成编译行为。

>>> import py_compile
>>> py_compile.compile("D:\\System\\My Documents\\Python\\test.py") # 编译单个 .py 文件
>>> import compileall
>>> compileall.compile_dir("D:\\System\\My Documents\\Python") # 编译指定目录下的所有 .py 文件
Listing D:\System\My Documents\Python ...
Compiling D:\System\My Documents\Python\test2.py ...
Compiling D:\System\My Documents\Python\test3.py ...
1

---------------------

Python 通过 PYTHONPATH 环境变量来查找 module,我们可以使用 sys.path 来查看或添加新的路径。

>>> sys.path
['D:/System/My Documents/Python', ...]
>>> sys.path.append("d:\\System\\My Documents");
>>> sys.path
['D:/System/My Documents/Python', 'd:/System/My Documents', ...]

Package

我们可以将多个 module 组合成一个 package。

方法很简单:

1. 在 Python\Lib 或者其他可以被搜索到的路径下创建一个子文件夹,文件夹名就是包名称。

2. 将所有需要加入的 module 放到该子文件夹中。

3. 创建一个包含代码或为空的 __init__.py 文件。在第一次 import 该包时,该文件会被自动执行。

在 import 该包的时候,需要添加包名称前缀。

>>> import mypackage
>>> import mypackage.module1
>>> from mypackage import *
>>> from mypackage.module1 import *

Tags:Python 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接