• 完成 Python 教程。
7 模块
- 在python中,一个.py文件就称之为一个模块(Module)。
- 使用模块最大的好处就是大大的提高了代码的可维护性。
- 使用模块的另一个好处就是编写代码不必从零开始。因为我们编写程序时,经常引用其他模块。
- 使用模块还可以避免函数名和变量冲突。
- 为了避免模块名冲突,python又引入了按目录来组织模块的方法,称为包(package)。
- 每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,python就把这个目录当成普通目录,而不是一个包。
__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是目录名
。- 自己创建模块时要注意命名,不能和python自带的模块名冲突。最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行
import abc
,若成功则说明系统存在此模块。 - 模块时一组python代码的集合,可以使用其他模块,也可以被其他模块使用。
- python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立即使用。
#!/usr/bin/env python3 #标准注释,表示这个py文件可以直接在Unix/Linux/Mac上运行
# -*- coding: utf-8 -*- #标准注释,表示.py文件本身使用标准UTF-8编码
' a test module ' #表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释
__author__ = 'Michael Liao' #使用__author__变量把作者写进去
import sys
def test():
args = sys.argv
if len(args)==1:
print('Hello, world!')
elif len(args)==2:
print('Hello, %s!' % args[1])
else:
print('Too many arguments!')
# 当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其
# 他地方导入该hello模块时,if判断将失败
if __name__=='__main__':
test()
- 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过
_
前缀来实现的。 - 外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
- 在python中,安装第三方模块,是通过包管理工具pip完成的。
- Mac或Linux上有可能并存Python 3.x和Python 2.x,因此对应的pip命令是
pip3
。 - 装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。
- 默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在
sys
模块的path
变量中。
>>> import sys
>>> sys.path
- 如果我们要添加自己的搜索目录,有两种方法:一是直接修改
sys.path
,添加要搜索的目录,这种方法是在运行时修改,运行结束后失效。第二种方法是设置环境变量PYTHONPATH
,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。