模块
1.模块是程序
任何Python程序都可以作为模块导入;若该模块未存放在默认的目录中,需要将当前所在模块添加到sys.path
中;
# 该模块保存在C:\python(Windows)或者~/python(UNIX/Mac OS X)目录中
>>> import sys
>>> sys.path.append('c:/python') # Windows
>>> sys.path.expanduser('~/python) # UNIX
在UNIX系统中,不能简单地将字符串'~/python'
添加到sys.path
中,必须使用完整的路径(如/home/yourusername/python
);如果希望将此操作自动完成,可以使用sys.path.expanduser('~/python)
;
2.模块用于定义
模块可以保持自己的作用域,定义的所有类和函数以及赋值后的变量都成了模块的特性; 若希望模块能像程序一样被执行,可对Python解释器使用-m切换开关来执行程序;若progname.py文件和其他模块都已被安装(即导入了progname),运行python -m progname args命令就会运行带命令行参数args的progname程序;
主程序中,变量__name__
的值是'__main__'
,在导入的模块中,该变量值为模块的名字;
# hello.py
def hello():
print "Hello, world!"
def test():
hello()
if __name__ == '__main__': test()
3.让模块可用
sys.path
包含了字符串组成的一个目录列表,解释器在该列表中查找模块;
- 获取解释器搜索路径:
>>> import sys, pprint >>> pprint.pprint(sys.path) # site-packages目录是最佳选择
- 添加解释器搜索路径:
# 标准的实现方法是在PYTHONPATH环境变量中包含模块所在的目录
4.包
可以将模块分组为包,包就是就是模块所在的目录;为了让Python将其作为包对待,必须包含一个命名为__init__py
的文件(模块);若将其作为普通模块导入,文件的内容就是包的内容;