pycharm使用小记__init__.py

发布时间:2026/9/10 22:58:32
pycharm使用小记__init__.py 什么时候在pycharm中建包需要__init__.py的包呢,什么时候不需要呢??官网链接中6.4包的解说Python 包(Packages)详解包是通过使用“带点号模块名”来构造 Python 模块命名空间的一种方式。 例如,模块名 A.B 表示名为 A 的包中名为 B 的子模块。 就像使用模块可以让不同模块的作者不必担心彼此的全局变量名一样,使用带点号模块名也可以让 NumPy 或 Pillow 等多模块包的作者也不必担心彼此的模块名冲突。假设要为统一处理声音文件与声音数据设计一个模块集(“包”)。声音文件的格式很多 (通常以扩展名来识别,例如 .wav,.aiff,.au),因此,为了不同文件格式之间的转换,需要创建和维护一个不断增长的模块集合。 为了实现对声音数据的不同处理(例如混声、添加回声、均衡器功能、创造人工立体声效果),还要编写无穷无尽的模块流。 你的包可能的架构是这样的(展示为多层级的文件系统形式):sound/ 最高层级的包 __init__.py 初始化 sound 包 formats/ 用于文件格式转换的子包 __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... effects/ 用于音效的子包 __init__.py echo.py surround.py reverse.py ... filters/ 用于过滤器的子包 __init__.py equalizer.py vocoder.py karaoke.py ...导入包时,Python 搜索 sys.path 里的目录,查找包的子目录。需要有__init__.py文件才能让 Python 将包含该文件的目录当作包来处理(除非使用 命名空间包,这是一个相对高级的特性)。 这可以防止重名的目录如 string 在无意中屏蔽后继出现在模块搜索路径中的有效模块。 在最简单的情况下,__init__.py可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__变量,这将在稍后详细描述。还可以从包中导入单个模块,例如:importsound.effects.echo这将加载子模块 sound.effects.echo。 它必须通过其全名来引用:sound.effects.echo.echofilter(input,output,delay=0.7,atten=4)另一种导入子模块的方法是:fromsound.effectsimportecho这也会加载子模块 echo,并使其不必加包前缀,因此可按如下方式使用:echo.echofilter(input,output,delay=0.7,atten=4)Import 语句的另一种变体是直接导入所需的函数或变量: