常见方式如下:
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"]
全部0条评论
快来发表一下你的评论吧 !