导入模块是使用模块的属性是不同的
python文件目录结构如下,

其中module1.py 定义了函数func_module1
module2.py 定义了函数func_module2
module4.py 定义了函数func_module4
module5.py 定义了函数func_module5
submodule3.py定义了函数func_submodule3
testpy下的__init__.py文件代码如下:
import module1 as name_module1
import module2 as module4
from module3 import submodule3
一、模块属性
1、直接import testpy

注意到testpy下包含的属性都是在__init__.py中出现的变量名。
(1)尽管module5.py在testpy文件夹下,但是testpy的没有module5属性,因为__init__.py中不包含变量module5
(2)

name_module1实际是module1模块; 对应__init__.py文件中的代码
import module1 as module name_module1
(3)

module4实际是module2,而不似乎testpy文件夹下的module4文件对于的模块; 对应__init__.py文件中的代码
import module2 as module4
(4)

submodule3并不在testpy文件夹下,但因为__init__.py文件中导入了,所以它也变成了testpy的属性
from module3 import submodule3
2、在testpy下面import module3

module3不包含其文件夹下的任意模块,因为__init__.py为空,不包含任何变量名
二、模块属性与模块导入
1、模块使用
使用模块时,“. ”表示获取对象的属性;testpy没有module5这个属性,所以不能调用其下的函数

2、模块导入
导入时, “.”表示模块路径
testpy下有文件module1.py module5.py;所以能成功导入module1 module5及它们的函数
testpy下没有文件name_module1.py;所以无法导入name_module1,也无法通过name_module1导入module1中的函数

3、执行导入testpy下的模块后,testpy就包含了新导入的模块作为属性

导入testpy时,会执行testpy下__init__.py的代码, 这就是testpy中属性存在的原因
4、导入模块时, 对于testpy若存在同名的属性,后导入的会覆盖前面导入的

三、导入时,建议直接导入需要用到的python文件中的函数或变量;这样能避免出错,不至于出现下面的情况

本文解析了Python中模块的导入方式及其对模块属性的影响。重点介绍了如何通过不同方式导入模块,并解释了这些导入方式如何影响模块的可见性和使用。此外,还提供了一些最佳实践建议。

1万+

被折叠的 条评论
为什么被折叠?



