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