Python导入包操作和本质

描述

导入包操作和本质

常见方式如下:

  • import a.aa.module_AA : 按模块路径导入在使用时,必须加完整名称来引用. 比如:a.aa.module_AA.fun_AA()
  • from a.aa import module_AA: 按包路径导入模块在使用时,直接可以使用模块名. 比如:module_AA.fun_AA()
  • from a.aa.module_AA import fun_AA照模块路径导入指定类or方法在使用时,直接可以使用函数名。比如:fun_AA()

注意事项:

  • from package import item 这种语法中, item 可以是包、模块,也可以是函数、类、变量(对照方式23)
  • import item1.item2 这种语法中, item 必须是包或模块,不能是其他(对照方式1)

实操代码

# 方式一: 按模块路径导入
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"]

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分