Python包、模块易错点

1、python项目的组织架构示意图
Python包、模块易错点
python程序结构:包―>模块―>类―>变量和函数(这两个为类的属性,不属于Python结构),就好比学生的身高与体重不属于学校的组织架构一样,它们只是学生所特有的属性

2、在Python里面包就是文件夹,但文件夹不一定是包,包是含有__init__.py模块的文件夹

3、Python中的import都是导入模块,导入包其实就是导入模块的集合,该模块集合以包名命名,且每次导入都会执行__init__所有的语句,这种特点常常用来批量导入模块
注:导入模块会执行模块所有的语句,导入包则导入包下所有模块并执行与包同名的__init__.py模块的所有语句(__init.py__被抽象成语包同名)

4、包和模块是不会被重复导入的,不然性能会受到很大影响

5、我们可以在包的__init__.py模块中写下

__all__ = ["module1","module2"]

来限制其他模块使用

from package import *

来导入该包的模块,以上代码限制其他包使用import *只能导入module1和module2模块
同样的,在模块顶部写

 __all__ = ["function1","function2","bianliang1","bianliang2"]

限制其他模块的导入行为

7、包或模块不能循环调用,即对A与B两个模块
在A中

import B

在B中

import A

这样子循环调用是不行的,因为在A中导入B时会执行B的所有语句,即会执行import B,然后在B中又会执行import A,如此循环,不会结束