模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
为避免模块名冲突,引入按目录来组织模块的方法,称为包
包
包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。
比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
import 语句
想使用 Python 源文件,只需在另一个源文件里执行 import 语句。可自定义导入模块名字:import 导入模块名字 as 自定义名字
from … import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中
使用自定义模块中的类:cd到执行文件目录下 from 模块名(即文件名) import 类名 如我在new2.py中写了一个Vector类 from new2 import Vector
from … import * 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的
模块的导入会“路径搜索”文件系统“预定义区域”
1 import sys 2 sys.path #显示搜索路径 3 sys.path.append('path') #追加搜索路径
使用模块
1 #!/usr/bin/python3 2 import sys #sys是内建模块 3 4 def test(): 5 args = sys.argv #sys模块的argv变量至少有一个元素,第一个参数永远是该.py文件的名称 6 if len(args) == 1: 7 print('Hello word:') 8 elif len(args) == 2: 9 print('Hello,%s!' % args[1] ) 10 else: 11 print('Too many argments!') 12 13 if __name__ == '__main__': 14 test()
当我们在命令行运行hello
模块文件时,Python解释器把一个特殊变量__name__
置为__main__
,而如果在其他地方导入该hello
模块时,if
判断将失败,因此,这种if
测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
类似__xx__这种特殊变量可直接引用,但有特殊用途
类似_xx和__xxx这种函数或变量则是非公开的,不应该被直接引用
安装第三方模块 命令
pips install Pillow
模块结构和布局
1 #(1)起始行 2 #(2)模块文档(介绍模块的功能及重要全局变量的含义) 3 #(3)模块导入,推荐先导标准库模块,再导第三方模块,最后导应用程序自定义模块,用一个空行分割这三类模块的导入语句 4 #(4)变量定义(尽量使用局部代替全局) 5 #(5)类的定义 6 #(6)函数定义 7 #(7)主程序 8 9 ##################例子################# 10 #!/usr/bin/env python3 11 #-*- coding:utf-8 -*- 12 13 '''这是一个测试模块''' 14 15 import sys 16 17 debug = True 18 19 class FooClass(object): 20 "Foo class" 21 pass 22 23 def test(): 24 "test function" 25 foo = FooClass() 26 if debug: 27 print('ran test()') 28 29 #(7)主程序 30 if __name__ == '__main__': 31 test()
(7)主程序
无论这个模块是被别的模块导入还是作为脚本直接执行都会执行这部分代码,根据执行的模式调用不同的函数代码,如果模块是被导入,__name__的值为模块的名字,如果模块是被直接执行 __name__的值为__main__