init.py 是在里面写__all__=[""]用来导入包的,函数或类写在同一个包的其他文件里。 但我看了 django 的源码,他有些包,会把一些函数或者类也写在__init__.py 所以我想问,把函数或者类写在__init__.py 有什么特殊含义或者用法么?
1
Etuloser 2019 年 7 月 23 日
你在导入这个模块的时候 实际是在导入 __init__.py 文件
|
2
HelloAmadeus 2019 年 7 月 23 日 via iPhone
没有,而且不推荐这样做。和普通.py 文件的唯一区别就是导入路径
|
3
tabris17 2019 年 7 月 23 日
没有特殊含义
用 __all__ 导出仅仅是针对 from xxx import * 而已 |
4
dinjufen 2019 年 7 月 23 日
一个文件夹包含__init__.py 就成了 Python 包,可以用 import、from... import ...导入
|
5
Vegetable 2019 年 7 月 23 日
没什么特殊的含义。
同样不建议在这里边写代码,不好组织代码。容易出现交叉引用的情况。 |
6
secsilm 2019 年 7 月 23 日
__init__.py 在 python3 里已经不需要了
|
7
chaleaochexist 2019 年 7 月 23 日
|
8
hmxxmh 2019 年 7 月 23 日
模块与包的区别,新建一个文件夹有 init 的就是包,你可以在新建的时候选择 package 看下
|
9
chaleaochexist 2019 年 7 月 23 日
@secsilm 找到了谢谢.
|
10
secsilm 2019 年 7 月 23 日 @secsilm 严格来说是 Python 3.3 之后空的 __init__. py 不需要了。见 [PEP 420]( https://www.python.org/dev/peps/pep-0420/)
|
14
secsilm 2019 年 7 月 26 日
@frostming 我感觉我说的那句没问题,有了 namespace packages,空的 __init__.py 确实不需要了。但如果在某文件夹发现了 __init__py,仍然会当作是 regular package ( 3.2 及之前版本实现的 package )。
|
15
frostming 2019 年 7 月 26 日
@secsilm Namespace package 是 python 包分发的概念,这个 package 是代码组织的概念,无论是不是 3.2 以后都是要__init__.py ,不然你都 import 不了
|
16
secsilm 2019 年 7 月 26 日 via Android
|
17
frostming 2019 年 7 月 26 日
|