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