Table of Contents

Python中的模块与包


概述

  1. 模块是代码文件,包是文件夹
  2. 可以导入的类型有:包、模块、模块中的内容
  3. 即使是导入一个模块的部分内容,整个模块也会完整地运行一遍
  4. 导入内容的时候,一定要使用from指定模块的位置
  5. 导入模块或包的时候,有时候不用from指定路径
  6. 可以使用as简化导入后的名称

相对导入和绝对导入

  1. 相对导入就是按照相对路径导入
  2. 单点表示当前路径,双点表示上层路径
  3. from . import x/from ..x import y
  4. 绝对导入就是按照绝对路径导入
  5. 绝对路径导入从包的根目录开始
  6. 包的根目录是从第一个__init__.py开始的(蜜汁Python)
  7. from A.B.C import D

包的初始化

  1. 包(文件夹)的目录下需要一个__init__.py
  2. 导入包或者包的子内容的时候,都需要执行该__init__.py
  3. 导入包的时候,只会执行包的__init__.py
  4. 如果希望导入包就是导入包的所有内容,就需要在该文件写明
  5. __init__.py的作用是,初始化这一个运行层级

包外导入

  1. 导入同目录的其他文件直接import即可
  2. 导入包也直接import即可
  3. 如果有多级目录,就按照包的标准来
  4. 不需要使用到from

包内导入

  1. 包内所有的导入都加上from来指定路径
  2. 建议使用绝对导入
  3. __init__.py里面务必使用相对导入,否则会套娃(想想为什么)

全部导入的控制方法

对于全部导入:from x import *
即使是全部导入,导入的也只是所有的不以下划线开始的变量
控制导入内容的方法:__all__=['x','y']
但是如果不是全部导入,而是导入模块后再访问,这种方法无效
ps:尽量不要用全部导入的方式

模块中不可访问的内容

模块中命名以双下划线开始的变量导入模块后也不可访问
eg:__x

包的形式和安装方法

从源码安装

Wheel包

AI:

在 Python 中,“wheel” 是一个特定的包格式,全称是 Wheel Archive Format,它的文件扩展名是 .whl。Wheel 格式旨在替代旧的 Egg 格式,以更有效地分发 Python 包。
Wheel 包是一种二进制包格式,通过预编译某些扩展而不需要源代码编译使得包安装更快。这对于包含大量代码或需要编译 C/C++ 扩展的库尤其有用,比如 NumPy 和 SciPy 等,这些操作通常相对较慢并且需要编译环境。

Egg包

是一种比较老旧的格式了