繁体   English   中英

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

[英]Understanding the use of multiple python decorators in a single statement

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

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

链接到 PEP-465: https ://www.python.org/dev/peps/pep-0465/

从 numpy 文档链接

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM