В следующем коде, как app.run () обнаруживает, что hello () существует? Я просмотрел код и не нашел ответа. Я думаю, что hello () не добавляется в список маршрутов до тех пор, пока он не будет вызван, но как он вызывается?
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
В частности, меня не интересует Flask. Я просто хочу сам реализовать нечто подобное.
Как называется этот шаблон проектирования?
Ваше предположение неверно. Декораторы сами по себе являются исполняемым кодом, и они вызываются, когда функция, которую они украшают, - определенный, то есть во время импорта. Затем код в декораторе может добавить маршрут в свой реестр.
См. Определение функции
route
github.com/pallets/flask/blob/master/flask/app.py#L1224