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 会在编译一次以后,将代码保存到一个缓存文件中。这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可。

相关推荐
癫狂的兔子3 分钟前
【Python】【Flask】抽奖功能
开发语言·python·flask
linuxxx11019 分钟前
python变量引用的小案例
python
2501_9361460437 分钟前
烟草叶片病害检测_YOLO11-C3k2-MSBlock模型详解
python
Data_agent1 小时前
Python 编程实战:函数与模块化编程及内置模块探索
开发语言·python
十铭忘1 小时前
windows系统python开源项目环境配置1
人工智能·python
Generalzy1 小时前
langchain deepagent框架
人工智能·python·langchain
栈与堆1 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
万行2 小时前
机器学习&第二章线性回归
人工智能·python·机器学习·线性回归
nervermore9902 小时前
3.3 Python图形编程
python
zhengfei6112 小时前
世界各地免费电视频道的 M3U 播放列表。
python