decorators1.py
def this_is_a_decorator(x): #x is incoming function to wrap
print("A")
print(x())
return "C"
####^^^ HIDDEN BY FLASK ^^^^#####
@this_is_a_decorator
def trigger():
return "BB"
print(trigger)
.py
decorators2.py
#####WITHOUT SYNTACTIC SUGAR:#####
def no_decorator(x):
print("A")
print(x())
return "C"
def trigger():
return "BB"
trigger = no_decorator(trigger)
print(trigger)
#####WITH SYNTACTIC SUGAR:#####
def this_is_a_decorator(x): #x is incoming function to wrap
print("A")
print(x())
return "C"
@this_is_a_decorator
def trigger():
return "BB"
print(trigger)
.py
Decorators are functions which modify the functionality of other functions. They make code shorter and more "Pythonic". They are the things that start with the @ symbol and precede a function call. Decorators are often referred to as "syntactic sugar"... cause all they do is make our code look pretty(er). For example, the following 2 code samples produce identical output:
With decorator:
from flask import *
app = Flask(__name__)
@app.route("/")
def main():
return "Hello Flask!"
app.run()
|
Without decorator:
from flask import *
app = Flask(__name__)
def main():
return "Hello Flask!"
main = app.route("/")(main)
app.run()
|