当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

Python导入包操作和本质

时间:2023-09-12 | 栏目:可编程逻辑 | 点击:

导入包操作和本质

常见方式如下:

注意事项:

实操代码

# 方式一: 按模块路径导入
import com.time.pause.capture2.module.a.aa.module_AA

print(com.time.pause.capture2.module.a.aa.module_AA.add(10, 20))

# 方式二: 按包路径导入模块
from com.time.pause.capture2.module.a.aa import module_AA

print(module_AA.add(10, 20))

# 方式三: 按照模块路径导入指定类or方法
from com.time.pause.capture2.module.a.aa.module_AA import add
add(10, 20)

import com.time.pause.capture2.module.a

导入包的本质

其实是“导入了包的 __init__.py ”文件. 也就是说 import pack1 意味着执行了包 pack1 下面的 __init__.py 文件. 这样可以在 __init__.py 中批量导入我们需要的模块,而不再需要一个个导入.

实操代码: 测试包的 __init__.py 文件本质用法a 包下的 __init__.py 文件添加如下内容:

import turtle
import math

print("导入a包")

b 包下的 module_B1.py 文件中导入 a 包,添加代码如下:

import com.time.pause.capture2.module.a

print(com.time.pause.capture2.module.a.math.pi)
# 如上测试我们可以看出python的设计者非常巧妙的通过__init__.py 文件将包转成了模块的操作

用 * 导入包

import * 这样的语句理论上是希望文件系统找出包中所有的子模块,然后导入它们. 尽管提供 import * 的方法,仍不建议在生产代码中使用这种写法 Python 解决方案是提供一个明确的包索引. 这个索引由 init .py 定义 all 变量,该变量为一个列表, 如上例 a包下的 __init__.py 中,可定义 __all__ = ["module_A","module_A2"]

您可能感兴趣的文章:

相关文章