iPython/Python中的@符号有什么作用?

12 浏览
0 Comments

iPython/Python中的@符号有什么作用?

这个问题已经在这里有了答案:

Python中“@”符号是什么作用?

我正在阅读的代码中使用了@batch_transform。这个@符号是什么作用?它是ipython特有的吗?

from zipline.transforms import batch_transform
from scipy import stats
@batch_transform
def regression_transform(data):
    pep_price = data.price['PEP']
    ko_price = data.price['KO']
    slope, intercept, _, _, _ = stats.linregress(pep_price, ko_price)
    return intercept, slope

admin 更改状态以发布 2023年5月21日
0
0 Comments

这是一个装饰器,一个Python装饰器。

函数、方法或类定义可以在一个特殊符号 @ 前面使用一个叫做装饰器的符号,其目的是修改接下来的定义的行为。

装饰器用 @ 符号表示,必须在相应的函数、方法或类之前的单独一行上。以下是一个例子:

class Foo(object):
    @staticmethod
    def bar():
        pass

此外,您还可以拥有多个装饰器:

@span
@foo
def bar():
    pass

这里有一个很好的教程,这里有一个关于它的 SO 线程

0
0 Comments

@语法表示 batch_transform 是Python装饰器,请在维基中阅读更多相关信息,引用:

Python装饰器是一种特定的Python语法变化,它允许我们更方便地更改函数和方法(以及可能在将来版本中的类)。 这支持DecoratorPattern的更可读应用以及其他用途

也请查看文档:

函数定义可以由一个或多个装饰器表达式包装。在包含函数定义的作用域中定义函数时,将评估Decorator表达式。结果必须是可调用的,该可调用的唯一参数是函数对象。返回值绑定到函数名称,而不是函数对象。多个装饰器按嵌套方式应用

0