This question already has answers here:
What does the “at” (@) symbol do in Python?
                                
                                    (12个答案)
                                
                        
                                6年前关闭。
            
                    
我正在阅读的代码使用@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

最佳答案

@语法表示batch_transform是Python装饰器,请在wiki中阅读有关它的更多信息,并引用:


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


还要看看documentation


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

10-05 21:46