19. 包

一、什么是包

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

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

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

二、创建包

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

num1 = 30
num2 = 40

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

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

num3 = 30
num4 = 40

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

三、包的使用

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

import arith
arith.add()
import arith.extension
arith.extension.factorial()

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

from arith import extension
extension.factorial()

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

from arith import add
add()
from arith.extension import factorial
factorial()

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

posted @ 2024-10-20 17:58  星光映梦  阅读(4)  评论(0编辑  收藏  举报