Discuss / Python / 我咋不太明白了

我咋不太明白了

Topic source

mycompany.web对应的为啥是 web下面的__init__.py,而不是web下的别的?

我也觉得,应该三个都是啊,有没有大佬回答一下

tb92288474

#3 Created at ... [Delete] [Delete and Lock User]

你可以把这看成文件夹,mycompany.web对应的是web文件夹下的默认文件(___init___.py)

mycompany.web.xxx对应的才是web文件夹下的其他文件

mycompany:

web------------------------>web:

___init___.py                ___init___.py

xxxxxx                          xxxxxxxxxx

xxxxxx                          xxxxxxxxx

xxxxx

mycompany.web.a是web目录下的a.py

mycompany.web.b是web目录下的b.py

mycompany.web.c是web目录下的c.py

mycompany.web其实完整的称呼是mycompany.web.__init__.py

这个init文件是python包结构的指向的默认文件,没这个文件python就不承认这个web目录是包了

如果你喜欢,你如果改源码把mycompany.web包默认指向a.py。。。

陽22348

#5 Created at ... [Delete] [Delete and Lock User]

因为import包的时候会自动调用__init__.py进行初始化吧

未指定具体的模块,就使用默认的__init__.py

否则必须指定到具体的模块

请问,一个文件夹就是一个包吗?把py文件拖进去就是有拖进包了吗?或者我怎么创建包啊?

o0stanley0o

#8 Created at ... [Delete] [Delete and Lock User]

一个目录+__init__.py 它就是包;没有__init__.py的就是个普通目录。

顶上去,解决了我的困惑

提个问题,原文提到:因为__init__.py本身就是一个模块,而它的模块名就是mycompany

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py

问:为何__init__.py的模块名不是mycompany.init?还是说mycompany``mycompany.init两个都可以?


  • 1
  • 2

Reply