【发布时间】:2026-02-20 20:30:01
【问题描述】:
我正在阅读包含以下代码的基本 Flask 教程:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
我还从许多网站了解了 Python 装饰器的基础知识,包括 * Decorators
我的假设是,在前面的代码中,函数hello 将被更改和修饰,并且为了运行应用程序,我需要在某处调用函数hello()。 Flask 如何确定它必须调用的函数的名称。
是否只是用装饰器包装函数定义以某种方式标记该函数?如果有,怎么做?
例如在下面的代码中,我正在调用我装饰的函数:
def decorate(foo):
print("I'm doing a lot of important stuff right now")
def inner():
print("Some stuff 1")
foo()
print("Some stuff 2")
return inner
@decorate
def hello():
print("Hello")
hello()
【问题讨论】:
-
如果您了解了基础知识,那么您应该知道我们仍然可以使用名称
hello访问它,因为上面的内容相当于:hello = @app.route("/")(hello)。 -
但要做到这一点,我需要调用
hello(),我没有在 Flask 代码中这样做 -
@KartikAnand 您不必这样做,因为当访问路由
'/'时,flask 会为您执行此操作。同样,在第二个示例中,当您调用hello()时,您实际上是在调用inner(),而后者又调用了实际的hello()。 -
@AshwiniChaudhary 我理解调用
hello()调用inner()并依次调用原始hello()的部分。我不明白的是Flask如何访问hello()内部的原始/。
标签: python flask decorator python-decorators