python中行首的@运算符[重复]

Posted

技术标签:

【中文标题】python中行首的@运算符[重复]【英文标题】:@ operator at the beginning of the line in python [duplicate] 【发布时间】:2019-01-15 16:09:34 【问题描述】:

我试图了解这个运算符 @, 在 python 中的用途。 我看到了一些关于矩阵乘法的东西,但肯定不是这样,我举个例子:

 @property
 def num_reserved_ids(self):
    return 0

或者:

 @registry.register_problem()
 class LibrispeechNoisy(Librispeech):

最后一个:

@registry.register_hparams
def transformer_librispeech_tpu_v1():
"""HParams for training ASR model on Librispeech on TPU v1."""
    hparams = transformer_librispeech_v1()
    update_hparams_for_tpu(hparams)

注册表是程序中使用的另一个文件。register_hparams 是里面的一个函数。 不知道什么是“属性”,但即使是我知道它是什么的注册表,我也无法理解操作员的目的:@,我有点慢,对此感到抱歉:/ ..

如果有人想查找更多代码,您可以查看 tensor2tensor 库: https://github.com/tensorflow/tensor2tensor/tree/master/tensor2tensor

【问题讨论】:

它被称为 decorator 但你的例子有点多样化,我想如何回答这个问题。 numpy 使用@ 作为矩阵乘号。标准 Python 将其用于decorators。 我不是故意复制的,如果这就是你所说的,我搜索了,没有任何返回,但是感谢另一个信息来源。 @albert1905 没有人建议您这样做,请不要将重复视为您做错了什么的迹象。您发现了一些问题的不同措辞方式,因此它将作为正确解释的路标:) 现在,Google 搜索中的不同单词组合更有可能让某人得到他们想要的答案。 【参考方案1】:

我认为您正在寻找的东西称为 PythonDecorators

这里是Wiki For Python Decorators

Python 装饰器是对 Python 语法的特定更改,它允许我们更方便地更改函数和方法(可能还有未来版本中的类)。这支持 DecoratorPattern 更具可读性的应用程序,但也支持其他用途。

了解它们的最好方法是来自Corey Schafer's Video on Python Decorators

【讨论】:

以上是关于python中行首的@运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

〜运算符在Python中做了啥[重复]

为啥python中有不相等的运算符[重复]

Python - 列表上*运算符的用途是啥[重复]

运算符@在python中的含义是啥[重复]

python->“运算符”用于定义函数[重复]

Python:拥有三元运算符的有效方法[重复]