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