Python基础之模块(Module)和包(Package)

模块(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

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431845183474e20ee7e7828b47f7b7607f2dc1e90dbb000

http://www.runoob.com/python/python-modules.html

https://www.cnblogs.com/feeland/p/4401758.html

猜你喜欢

转载自blog.csdn.net/qq_33567641/article/details/81385261