关于 Python 文件夹中__init__.py 的作用

2021 年 1 月 20 日
 IurNusRay
[![sWTXpd.png]( https://s3.ax1x.com/2021/01/20/sWTXpd.png)]( https://imgchr.com/i/sWTXpd)

如图,好像有没有__init__.py 并不影响什么啊,不懂网上一大堆说的__init__.py 将文件夹标记为 python 包是什么意思
4054 次点击
所在节点    Python
20 条回复
krixaar
2021 年 1 月 20 日
你在__init__.py 里加一行 print('This is __init__.py') ,然后再运行一下试试。
zachlhb
2021 年 1 月 20 日
做初始化操作的
cjq8z
2021 年 1 月 20 日
类这些初始化需要这语句。
monsterxx03
2021 年 1 月 20 日
在 python2 里文件夹里必须要有 __init__.py 文件在能被当成包 import , python3 里不是必须,只有在包被 import 时候执行的时候才需要
IurNusRay
2021 年 1 月 20 日
@krixaar 都能正常导入执行的,难道是 python3 已经不需要__init__.py 就可以导入文件夹了吗
acmore
2021 年 1 月 20 日
另一个常见的用法:暴露出内部的接口和成员,供外部调用。
使用得当可以减少很多记忆接口和排查循环引用的心智负担。
IurNusRay
2021 年 1 月 20 日
![image]( https://imgchr.com/i/sWbpFS)

上图是我的情况
IurNusRay
2021 年 1 月 20 日
@monsterxx03 是指执行包里面的.py 文件里面的函数吗
monsterxx03
2021 年 1 月 20 日
@IurNusRay 意思是 __init__ .py 里的代码会在包被 import 的时候自动执行, 自己试一下就知道了
NeezerGu
2021 年 1 月 20 日
https://stackoverflow.com/questions/448271/what-is-init-py-for

都不需要你会英语,谷歌翻译看就行。
请使用谷歌搜索以解决国内各种野鸡教程的问题
xiri
2021 年 1 月 20 日
比如我有一个 a 文件夹,里面有一个 b.py 文件,里面写了一个 c 函数(供外部调用的)
我的一般做法是在 a 文件夹的__init__ .py 里面写一个 from .b import c
然后其他文件中需要调用 c 函数的时候只需要 from a import c
如果没有__init__ .py ,要调用 c 函数的话需要 from a.b import c

就像楼上说的,__init__ .py 里的代码会在包被 import 的时候自动执行,在 python3.3 之前必须要这个文件才能将文件夹识别为 python 包,但是现在已经不强制需要了
renmu123
2021 年 1 月 20 日
IurNusRay
2021 年 1 月 21 日
@NeezerGu 哈哈,谢谢,我测了半天,明明不需要__init__.py 也能导入,现在明白了
IurNusRay
2021 年 1 月 21 日
@xiri 恩,懂了,谢谢
502Chef
2021 年 1 月 21 日
老哥的 vsc 主题是什么?好漂亮呀
ppxpps
2021 年 1 月 21 日
@huyujievip 感觉是 pycharm
502Chef
2021 年 1 月 21 日
@ppxpps 哈哈哈,我看了一下,是 pycharm,原来 pycharm 也有这么漂亮的 theme
IurNusRay
2021 年 1 月 21 日
@huyujievip 用的是 pycharm,下载了个主题插件"Material"
xiaoHuang3
2021 年 1 月 22 日
@IurNusRay 为啥我刚装的"Material"跟你的不一样 TAT,我的太丑了,感觉都没生效
IurNusRay
2021 年 1 月 22 日
@xiaoHuang3 不会吧,安装完重启就会默认用这个主题了,或者换个主题试试,settings--->Appearence--->Material Theme 里面看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/746771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX