我最近遇到了一个代码片段,它与下面给出的代码片段非常相似:
def abc(a,b,c):
a1 = a[:, :1]
b1 = b[:1, :]
c1 = c[:1, :]
a2 = a1.conj().transpose()
b2 = c1.conj().transpose()
d = np.linalg.inv(np.sqrt(b1))
e = d @ a2 @ b @ b2 @ d
return e
a,b,c are numpy arrays.
我正在尝试了解 python 装饰器,并从 this question 学到了一些东西.
但是我无法弄清楚变量e
是如何定义的。到底发生了什么?
我是Python初学者。据我所知,装饰器包装了一个函数,并且函数作为参数传递。但在这里,这些都是 numpy 数组。
对定义变量 e
时到底发生了什么或单行中具有多个装饰器的特定索引的含义的任何解释都会非常有帮助。
最佳答案
行e = d @ a2 @ b @ b2 @ d
与Python装饰器无关。这里的 @
字符是 Python @
运算符:https://docs.python.org/3/library/operator.html#operator.matmul
PEP-465 链接:https://www.python.org/dev/peps/pep-0465/
来自 numpy 文档 link :
The matmul function implements the semantics of the @ operator introduced in Python 3.5 following PEP465.
关于python - 了解在单个语句中使用多个 python 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64572986/