模块
一.模块其实就是python脚本,增强代码的可维护性和可重用性;
- 系统内置模块:time, random
- 自定义模块:
- 第三方模块:
二.导入模块的三种方法:
- import 模块名: 尽量优先使用, 避免与现有的函数名或者变量名冲突;
模块名.函数名()
模块名.变量名 - from 模块名 import 函数/变量名: 有节制的使用;容易与现有的函数名或者变量名冲突;
- from 模块名 import *: 尽量避免使用, 会污染命名空间;
实验:module目录下定义cacl模块
结果如下图
对于cacl模块可以进行测试
这时对于导入该模块的module_test来说会连测试的结果5也引用
为了避免这种情况,cacl在进行自检时,加入if name == ‘main‘:(main回车可自动补全)
这种导入方法也是可以的
from cacl import add,mulit,a ##或者 *
print add(1,3)
print mulit(2,5)
print a
结果
4
10
hello python
包,其实就是一个目录,当一个新包建立时,会自动生成一个脚本:__init__.py
新建包Package,在这个包下又建立package01包和02包,每个包下新建module01和module02
编辑module01模块
在module02中导入包01下的module01
包02下的module02测试
注意: from Package01 import * 实质上是执行Package01包里面的init.py脚本的;当然这个里边没有的话取其他模块找,要
python包/模块路径问题
import sys
import pprint
pprint.pprint(sys.path)
结果:列表形式
['/Python/root/Package/package02',
'/Python/root',
'/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages']
添加新的路径
sys.path.append('/root/Desktop/201803python周内/day06/Package')