开始Python -- 模块(Modules) - Dynamic Script Lang...

来源:百度文库 编辑:神马文学网 时间:2024/04/28 01:32:28
开始Python -- 模块(Modules) 收藏
1、模块
(1)Python程序可以作为模块导入
l         将Python程序保存为.py文件到指定目录,例如:c:/python/hello.py
# hello.py
print "Hello, world!"
l         告诉Python模块的位置,一种方法是将.py文件的保存目录追加到Python的系统路径中:
>>> import sys
>>> sys.path.append('c:/python')
l         这样就可以导入程序了(模块名即.py文件名):
>>> import hello
Hello, world!
l         如果修改了程序,再次导入,程序什么也没有做:
>>> import hello
>>>
l         这是因为模块主要用来定义变量、函数和类,只导入一次。
l         要重新导入的方法是使用内建的reload()函数:
>>> hello = reload(hello)
Hello, world!
(2)模块用来定义变量、函数和类
l         模块导入后,模块中定义的变量、函数和类可以作为模块的属性使用
# hello2.py
def hello():
print "Hello, world!"
>>> import hello2
>>> hello2.hello()
Hello, world!
(3)使你的模块有效
l         通常不会像前面的方法一样编辑sys.path,而是将模块目录放到系统默认的路径中:
>>> import sys, pprint
>>> pprint.pprint(sys.path)
['',
'C:\\WINDOWS\\system32\\python24.zip',
'D:\\workshop\\Python24\\DLLs',
'D:\\workshop\\Python24\\lib',
'D:\\workshop\\Python24\\lib\\plat-win',
'D:\\workshop\\Python24\\lib\\lib-tk',
'D:\\workshop\\Python24\\Lib\\site-packages\\pythonwin',
'D:\\workshop\\Python24',
'D:\\workshop\\Python24\\lib\\site-packages',
'D:\\workshop\\Python24\\lib\\site-packages\\win32',
'D:\\workshop\\Python24\\lib\\site-packages\\win32\\lib']
l         site-packages目录通常是个不错的选择。
l         另外一种方法是将模块目录放到操作系统环境变量PYTHONPATH中。
l         UNIX的例子:
export PYTHONPATH=$PYTHONPATH:~/python
l         Windows的例子:
set PYTHONPATH=%PYTHONPATH%;C:\python
2、包(package)
(1)包的结构:
l         模块保存到.py文件中;
l         包是目录,但其中必须包含__init__.py的模块;
l         模块文件保存在包目录中;
l         下面是个例子:
~/python/                          假设目录加到PYTHONPATH中
~/python/drawing/                           包目录(drawing包)
~/python/drawing/__init__.py       包目录下的代码(drawing模块)
~/python/drawing/colors.py         colors模块
~/python/drawing/shapes.py         shapes模块
l         下面的导入都是合法的:
import drawing                     # 导入drawing包,只有__init__模块有效
import drawing.colors              # 导入colors模块,使用全名drawing.colors访问
from drawing import shapes         # 导入shapes模块,使用短名shapes访问
3、揭示模块内容
(1)使用dir()函数
l         使用dir()函数揭示模块内容:
>>> import copy
>>> [name for name in dir(copy) if name[0] != '_']
['Error', 'PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'inspect', 'name', 't']
(2)__all__变量
l         __all__变量用来定义模块的公共接口
>>> copy.__all__
['Error', 'copy', 'deepcopy']
l         当用下面的导入语句时,__all__变量设定的函数(变量或类)可以直接引用:
from copy import *
l         而PyStringMap必须显式导入,才可以直接引用:
from copy import PyStringMap
l         在编写模块时,设置__all__变量通常是个有用的技巧
(3)获得帮助信息
l         使用help()函数获得帮助信息
>>> help(copy.copy)
Help on function copy in module copy:
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
l         文档字符串是写在函数(变量或类)的开始部分,用来文档化的,保存在__doc__属性中:
>>> print copy.copy.__doc__
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
(4)查看源代码
l         使用模块的__file__属性,可以获得模块源代码所在的位置
>>> print copy.__file__
D:\workshop\Python24\lib\copy.pyc
l         .pyc文件是编译过的Python文件,在第一次导入模块时创建(和.py文件同一个目录);在后续导入时使用该文件,以提高Python的处理效率
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ruby_beginner/archive/2009/03/02/3949901.aspx