18. Python脚本学习笔记十八模块
本篇名言:“8种能够让你快乐的方法:1放下过去。2少担心。3简单生活。4期望少。5多付出。6经常笑。7找一个真正爱的人。8认识举世无双的我。”
Python的标准安装包括一组模块,称为标准库。我们先来看下模块。
任何Python程序都能作为模块导入。每个模块只能导入一次,当然导入后可以重新加载的。
在Chapter1.py中定义如下函数:
def hello():
print "hello.world!"
在Chapter2.py中输入如下执行
importChapter1
Chapter1.hello()
输出结果如下:
hello.world!
关于判断是主程序还是被导入的函数。
可以通过变量__name__来判断。
1. 获得环境变量
>>> import sys
>>> print sys.path
['', 'C:\\Windows\\system32\\python27.zip','D:\\python27\\DLLs', 'D:\\python27\
\lib', 'D:\\python27\\lib\\plat-win', 'D:\\python27\\lib\\lib-tk','D:\\python27
', 'D:\\python27\\lib\\site-packages']
如下导入sys模块,然后输出sys.path。
2. 关于包
为了组织好模块,可以将它们分组为包。包其实就是模块所在的目录。不过为了让Python将其作为包对待,必须包含一个命名为__init__.py的文件。
3. 授之于鱼不如授之于渔
如何研究下模块?看看官方提供的包有什么?这个是作为Python程序员必备的功能。
以copy 模块为例
下import copy
3.1 dir
使用列表推导式如下:
>>>import copy
>>> [nfor n in dir(copy) if not n.startswith('_')]
['Error','PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name',
't', 'weakref']
得到了模块copy中的所有函数,类,变量。
3.2 __all__变量
可以直接通过copy.__all__,
可以得到copy模块定义的共有接口。
3.3 help
help命令哪里都有,基本正规的程序都会提供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.
可以快速得到帮助,这个非常好用。
也可以直接help(copy)对整个模块进行求助。
此外还可以通过__doc __属性来得到文档的描述。不过不是每个模块都有不错的文档字符串。
学习Python 编程最有用的文档莫过于Python库参考,对所有标准库中的模块都有描述。
3.4 源码在哪里
读源码当然最好,怎么找到源码呢?如下执行即可得到位置
>>> print copy.__file__
D:\python27\lib\copy.pyc
一些模块可能不包含任何可以阅读的Python源代码,它们可能融入到了解释器内(如sys模块)或者用C语言写的。