news 2026/9/10 22:58:19

pycharm使用小记__init__.py

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 语句的另一种变体是直接导入所需的函数或变量:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 22:57:11

麻雀搜索算法优化LSSVM的多输出回归预测实战

做过多输出回归预测的人应该都有同感:单输出模型跑得再溜,一换到“一次输入、同时预测好几个相关指标”的场景,常常会碰一鼻子灰。比如根据风机的转速、功率、温度,同时预测未来几个时段的发电量;或者根据烟气参数&…

作者头像 李华
网站建设 2026/9/10 22:56:38

CANN/GE DT用例开发总纲

GE DT用例开发总纲 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorF…

作者头像 李华
网站建设 2026/9/10 22:55:27

机器学习入门:手写线性回归与房价预测实战

我入行时做的第一个真正意义上的机器学习模型,不是神经网络,而是线性回归。后来带新人,我也总是先让他们把线性回归从头撸一遍。不是因为简单,而是因为它把机器学习的核心逻辑全串在了一起:数据怎么处理、模型怎么定义…

作者头像 李华
网站建设 2026/9/10 22:54:33

CANN/ge图引擎节点构建API

Build 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友…

作者头像 李华
网站建设 2026/9/10 22:51:05

Scikit-learn入门:从数据预处理到模型部署全流程

1. 为什么选择Scikit-learn作为机器学习入门工具在数据科学和机器学习领域,Scikit-learn(简称sklearn)已经成为Python生态中最受欢迎的机器学习库之一。作为一个从业多年的数据科学家,我依然清晰记得第一次使用这个工具时的惊喜—…

作者头像 李华
网站建设 2026/9/10 22:50:49

昇腾GE模型输入数量接口

aclmdlGetNumInputs 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Tensor…

作者头像 李华