19. 包

一、什么是包

在 Python 中,包(Package)也是一个模块。当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用包。普通的模块就是一个 py 文件,而包一个分级层次的目录结构,它将一组功能相近的模块组织在一个目录下。这样,既可以起到代码规范的作用,又能避免模块名重名引入的冲突。在包中,必须要有一个 __init__.py 这个文件,这个文件中可以包含中的主要内容。

使用 import 语句首次导入包时,会产生一个名称空间。然后会运行该包下的 __init__.py 文件,将运行过程中生成的名字都会丢到这个名称空间中。然后会在当前执行文件的名称空间拿到一个名字,该名字指向被导入的包的名称空间。

在 Python 3 中可以没有 __init__.py 文件;

二、创建包

创建一个 【arith】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

python 复制代码
num1 = 30
num2 = 40

def add():
    print("我是arith包下__init__模块中的add()方法")

在 【arith】 目录下,创建 【extension】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

python 复制代码
num3 = 30
num4 = 40

def factorial():
    print("我是arith包下extension模块中的factorial()方法")

三、包的使用

我们可以通过 "import 完整包名.模块名" 的方式加载指定模块。

python 复制代码
import arith
arith.add()
python 复制代码
import arith.extension
arith.extension.factorial()

我们还可以通过 "from 完整包名 import 模块名" 的方式加载指定的模块。

python 复制代码
from arith import extension
extension.factorial()

我们还可以通过 "from 完整包名.模块名 import 变量 " 的方式加载指定模块中的指定结构。

python 复制代码
from arith import add
add()
python 复制代码
from arith.extension import factorial
factorial()

__pycache__ 目录下的文件模块的缓存文件。Python 代码在执行前,需要被解析器先转换为机器码,然后再执行。所以我们在使用模块(包)时,也需要将模块中的代码先转换为机器码然后再交由计算机执行。而为了提高程序的运行的性能,Python 会在编译一次以后,将代码保存到一个缓存文件中。这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可。

相关推荐
七七&55614 分钟前
java面试-场景题
java·python·面试
我就是全世界14 分钟前
2025主流智能体Agent终极指南:Manus、OpenManus、MetaGPT、AutoGPT与CrewAI深度横评
人工智能·python·机器学习
waterHBO35 分钟前
python 爬虫工具 mitmproxy, 几问几答,记录一下
开发语言·爬虫·python
pianmian139 分钟前
arcpy与扩展模块
python
Blossom.1181 小时前
使用Python和OpenCV实现图像识别与目标检测
人工智能·python·神经网络·opencv·安全·目标检测·机器学习
chicpopoo1 小时前
Python打卡DAY46
开发语言·python
灏瀚星空1 小时前
Python数学可视化:3D参数曲面与隐式曲面绘制技术
开发语言·python·3d
晨尘光1 小时前
在Windows下编译出llama_cpp_python的DLL后,在虚拟环境中使用方法
python·llama
Java Fans1 小时前
如何在Windows本机安装Python并确保与Python.NET兼容
开发语言·windows·python
小邹子1 小时前
抑郁症患者数据分析
python·信息可视化·数据分析