在Python中,"at"(@)符号有什么作用?
示例
class Pizza(object): def __init__(self): self.toppings = [] def __call__(self, topping): # When using '@instance_of_pizza' before a function definition # the function gets passed onto 'topping'. self.toppings.append(topping()) def __repr__(self): return str(self.toppings) pizza = Pizza() @pizza def cheese(): return 'cheese' @pizza def sauce(): return 'sauce' print pizza # ['cheese', 'sauce']
这个示例展示了你在装饰器后面定义的函数
/方法
/类
实际上只是作为一个参数
传递给了@
符号后面的函数
/方法
。
首次出现
微型框架Flask从一开始就采用以下格式引入装饰器:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!"
这转化为:
rule = "/" view_func = hello # They go as arguments here in 'flask/app.py' def add_url_rule(self, rule, endpoint=None, view_func=None, **options): pass
最终明白这一点,使我对Flask感到平静。
在一行开头使用@
符号来表示类和函数的装饰器:
常用的 Python 装饰器包括:
在一行中间使用@
符号可能表示矩阵乘法: