在python项目中创建 文件夹时发现有两个选择:
两者的区别是,选择python package后会自动生成一个 init.py 文件
init.py 文件的作用是将文件夹变为一个Python模块, 可以在其他py文件中调用这个文件夹下的所有py文件
【实验一】:init的用法
按照 Directory和 Python Package各创建文文件夹如下
此时在另外一个程序中执行:
(1)执行下面语句
from A_init import yy
发现import 引入包(包是指模块,即.py文件) OK
(2)执行下面语句
from A_no_init import yy
则报错: 找不到此模块
说明IDE是通过init文件来识别哪些是可以引入的包的
【实验二】:__all__的用法
all__变量是一个列表,可以在模块中和__init____.py中使用。
all__变量结合from … import * 语句使用,all__变量就是控制*所表示要引入的东西(模块,函数,类等)
举例:
A_init 文件夹下的yy.py文件中有方法 a,b,pp.py文件中有方法c,d
test.py文件需要使用a,b,c,d方法,可以有两种实现方式
(1)使用all 列表
首先在 A_init 文件下的init文件中,引入yy和pp,并将所用到的方法名称加入到all列表中去
from .yy import *
from .pp import *
__all__=['a','b','c','d']
然后在test.py中使用如下:
from A_init import *
a()
b()
c()
d()
输出结果为:
hello aa
hello bb
hello cc
hello dd
(2)不适用all列表,直接引用py文件下的所有方法
from A_init.yy import *
from A_init.pp import *
a()
b()
c()
d()