Python中的模块


1. 如何使自己编写的代码成为模块。只需要将编写的.py文件放在指定的文件夹内,让解释器知道去哪找模块就行了。设置目录的方式有两种:

#第一种方式:通过编辑sys.path:
import sys
sys.path.append(‘G:\MyModule’)  #此时将.py放在这个文件夹中,解释器就能找到
 
#第二种方式:通过设置环境变量PYTHONPATH,将要存放模块的目录加进来。要知道在linux和windows中如何设置环境变量。
 
#hello.py,放在指定目录中
print(‘hello,world’)
>>>import hello  #第一次导入
Hello,world    #第一次导入会执行模块里面的代码
>>>import hello  #第二次导入
                #第二次导入时,就不执行了。
>>>hello=reload(hello)#若一定让它执行可用reload语句

2. 如何在模块中增加测试代码

#第一种方案,傻瓜方案
#hello.py
def hello():
    print(‘hello’)
#test
hello()#导入模块的时候,这句话也会执行,如果不想在导入的时候执行采用第二种方案
 
#第二种方案,推荐方案
#hello.py
def hello():
    print(‘hello’)
#test
def test():
    hello()
if__name__='__main__':test()  #这句话很有用

3. 为了组织好模块,可以将它们分组为包(package)。包基本上就是另外一类模块,有趣的地方就是他包含其他模块。包就是模块所在的目录,为了让python将其当作包对待,必须包含一个命名为__init__.py的文件(模块)。为了将模块放置在包内,直接把模块放在包目录内即可。

#包的例子:假设一个名为drawing的包,里面包含shapes和colors的模块则包含如下文件:

\drawing\__init__.py、\drawing\shapes.py和\drawing\colors.py。则导入包的时候有如下三种方案:

import drawing   #只有__init__.py是可以用得,shapes和colors不可用
import drawing.colors  #colors可用了,但是只能drawing.colors
from drawing import shapes #shapes可以直接用

4. 模块中有什么

(1) dir:查看模块包含的内容可以使用dir函数,它会将模块的所有函数、类、对象等所有特性列出。

>>> [n for n in dir(copy) if not n.startswith('_')]
['Error', 'PyStringMap', 'builtins', 'copy', 'deepcopy', 
'dispatch_table', 'error', 'name', 't', 'weakref']

(2)__all__:在模块中设置了__all__变量,则用“from copy import*”语句时只会到变量指定的几个函数,其他的被该变量给屏蔽。

>>>copy.__all__
['Error','copy', 'deepcopy']  #只给外界这三个接口

(3)__doc__:模块的一些说明。

(4)__file__:通过该方式找到源码文档在哪,还可以通过检查sys.path获得。

>>> print (copy.__file__)
D:\Program Files\python\lib\copy.py

评论关闭