模块(Module)
能够逻辑的组织代码块,以.py文件结尾的包含Python对象定义和Python语句的Python文件。
模块的类别:
- 使用Python代码写的代码文件(.py)
- 使用C/C++编写的.dll(动态链接库)文件
- 包装好的一组模块包
- 使用C编写并链接到Python解释器的内置模块
为何使用模块?
如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python文件调用方式去执行。
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,
总之,使用模块的好处就是为了方便管理代码。
模块的引入
import
import module1[, module2[,... moduleN]
我们先编写一个模块:
my_module.py
def func1(a, b):
print("前面的值是:", a, "\n后面的值是:", b)
def func2():
print("你好啊,世界")
测试文件:test.py
def func1(a, b):
print("前面的值是:", a, "\n后面的值是:", b)
def func2():
print("你好啊,世界")
运行test.py:
前面的值是: 1
后面的值是: 2
你好啊,世界Process finished with exit code 0
from...import
from...import name1[, name2[, ... nameN]] 导入模块的内容
from...import * 导入模块全部内容
导入模块的内容
from math import fabs
lst = [1, -2, 5, 3, -3.2, -5.2, 1.14, -3.2]
res = []
for i in lst:
res.append(fabs(i))
print(res)
结果:
[1.0, 2.0, 5.0, 3.0, 3.2, 5.2, 1.14, 3.2]
Process finished with exit code 0
搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
- 1、当前目录
- 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
- 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
包(package)
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件。
常见包的结构如下
包的导入仍使用 import 、 from ... import 语句,使用 “圆点模块名” 的结构化模块命名空间。
参考:
http://www.cnblogs.com/Eva-J/articles/7228075.html