如何解决了解在单个语句中使用多个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装饰器,并从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:
matmul函数实现@运算符的语义 在PEP465之后的Python 3.5中引入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。