这个介绍 Flask 代码中发生了什么?

What is going on in this intro Flask code?

这是 the Flask mega-tutorial.

的开始代码

Let's start by creating a simple init script for our app package (file app/init.py):

from flask import Flask

app = Flask(__name__)
from app import views

The script above simply creates the application object (of class Flask) and then imports the views module, which we haven't written yet.

我不确定这里发生了什么。如果 app 是 class 的实例,我们如何在其上使用 importfrom app import views 这一行对我来说毫无意义。有人可以帮我了解这里发生了什么吗?为什么我们需要实例化一个 class 来导入某些东西?

不幸的名字冲突! from app import 指的是 模块或包 app(由 mkdir app 在本教程中的这段代码之前创建,并在 __init__.py 中编辑它), 与 变量名 app 无关,后者确实引用了 class 实例。

正如 import this 的最后一行赞美的那样,命名空间确实是一件好事——但是当它们被隐式使用时(如 fromimport,其命名空间是与模块的完全分开)它可能会更好,更容易避免故意冲突名称......因为,如果不这样做,reader 的部分混淆几乎是不可避免的。教程的作者应该特别注意这一点!