介绍
最近小虎遇到了python代码中的@,代码长下面这样。她到底在@u什么?我的例子中,这只是一个乘法。但更常见的用法是对类进行操作。有人叫@为装饰器。
INPUT_NOISE @ np.random.randn(2, 1)
@的用法
乘法
用2x2矩阵与随机数数组
INPUT_NOISE = np.diag([1.0, np.deg2rad(30.0)]) ** 2
x=np.random.randn(2, 1)
进行矩阵multiplication。
INPUT_NOISE @ x
结果跟下面一样
INPUT_NOISE.dot(x)
压缩名称
将pizza定义为Pizza的类,然后利用@对pizza进行添加修改。
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)
结果如下:
压缩名称用途的参考资料:What does the “at” (@) symbol do in Python?