python包的中 _init _.py文件介绍
python包的中 _init _.py文件介绍
我们新建python包时常常会看到一个__init _.py文件。
作用介绍:
一:这个文件是属于python包的,这个文件用作于标识python包,当一个文件夹有这个__init _.py文件时,python将把其当成一个模块包进行管理。你打开文件可以发现文件是空的。
二:这个文件可以设置变量控制模块的模糊导入,如下:
我现在再包K里面有2个.py文件,如下图片所示:
文件PY1.py内容如下:
def holle1():
print('holle1')
文件PY2.py内容如下:
def holle2():
print('holle2')
文件__ init.py __内容如下:
__all__ = ['PY2']
print('__init__')
现在我再另一个文件里面导入K包里面的全部模块
from K import *
PY2.holle2()
PY1.holle1() #这里将抛出异常
#输出结果如下:
'''
__init__ #这里说明了__init__.py被运行了
holle2
这里抛出异常
Traceback (most recent call last):
......
NameError: name 'PY1' is not defined
'''
抛出异常的原因很简单,原因是因为我在__ init __.py文件里面设置了变量 _all _ 这个变量,这个变量设置的是当将包内的全部模块进行导入时,‘*’号将代表 _ all _变量里面的模块名。并且这里导入的是PY2文件,并不是init _.py文件,但是文件还是运行了。所以说init文件就是包的一部分,不单单是标识作用。
三:当成一个模块来使用(不推荐)
现在我把_init _.py文件内容更改成如下:
print('__init__')
A = ['123']
def InitFunction():
print('This is the function of __init__.py')
其他文件中:
import K
print(K.A)
print(type(K))
K.InitFunction()
输出结果如下:
__init__
['123']
<class 'module'>
This is the function of __init__.py
init_
[‘123’]
<class ‘module’>
This is the function of _ init_.py
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)