1、模块和包
在Python中,一个.py文件就称之为一个模块(Module)。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。查看Python的所有内置函数:链接。
1.1、包
为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。一个拥有__init__.py文件的文件夹即可称之为一个包,不同包下模块可以同名,同一个包下模块同名才会冲突。每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是该文件夹名,比如下面的mycompany
。
上面组织目录当中,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz。
上面目录当中,文件www.py
的模块名就是mycompany.web.www
,两个文件utils.py
的模块名分别是mycompany.utils
和mycompany.web.utils
。
1.2、如何引入模块
Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。
例如,使用 sys 模块:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' 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!') if __name__=='__main__': test()
第1行和第2行是标准注释,第1行注释可以让这个hello.py
文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;第6行使用__author__
变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;
以上就是Python模块的标准文件模板,当然也可以全部删掉不写。
当我们在命令行运行一个模块文件时,Python解释器会把一个特殊变量__name__
置为__main__
,而如果在其他地方导入该模块时,将不会把__name__置为__main__。
1.3、使用第三方模块
在Python中,安装第三方模块,是通过包管理工具pip完成的。在安装Python时,我们可以勾选 pip 来安装包管理工具。在命令提示符窗口下尝试运行pip
,如果Windows提示未找到命令,可以重新运行安装程序添加pip
。
安装第三方模块的方法:
pip install Pillow