理解在单个语句中使用多个python装饰器



我最近看到了一个代码片段,它与下面给出的代码片段非常相似:

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是numpy数组。

我正在努力理解python装饰器,并从这个问题中学到了一些东西。

然而,我不知道变量e是如何定义的。到底发生了什么?

我是Python的初学者。据我所知,装饰器将函数包装起来,函数作为参数传递。但在这里,这些都是numpy数组。

定义变量e时到底发生了什么,或者单行中有多个装饰符的特定索引意味着什么,任何解释都将非常有用。

e = d @ a2 @ b @ b2 @ d与Python装饰器无关。这里的@字符是Python@运算符:https://docs.python.org/3/library/operator.html#operator.matmul

LInk to PEP-465:https://www.python.org/dev/peps/pep-0465/

来自numpy文档链接:

matmul函数实现了@运算符的语义在PEP465之后的Python 3.5中引入。

最新更新