再看flask web开发一书,里面有两段代码
app/main/__init__.py:
from flask import Blueprint
main = Blueprint('main', __name__)
from . import views, errors
app/main/errors.py:
from . import main
在知乎看到如下理解from . import XXX
是在当前程序所在文件夹里__init__.py程序中导入XXX,
想导入的函数不在当前文件夹,那么就有可能用到 from .. import XXX
(即上一个文件夹中的__init__.py),或者from ..A import XXX
(即上一个文件夹中的文件A)
问题1:书中在__init__.py中使用这样的写法要怎么样理解,__init__.py中并没有views, errors。
问题2:为什么在__init__.py中将from . import views, errors放到最后就不会循环导入
补充问题2:是不是因为errors.py中的from . import main只是从__init__.py中导入那个蓝本对象,只要导入完了那个蓝本,接下来的代码就不会运行和导入,所以就不会运行被放在最后的from . import views, errors
1个是绝对引用,另1个是相对引用的。