2

私が読んでいるコードは@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
4

3 に答える 3

2

Python デコレータである構文シグナルについては、wiki@の引用を参照してください。batch_transform

Python デコレータは、関数とメソッド (および将来のバージョンではクラス) をより便利に変更できるようにする Python 構文への特定の変更です。これにより、DecoratorPattern のより読みやすいアプリケーションだけでなく、他の用途もサポートされます。

ドキュメントもご覧ください:

関数定義は、1 つまたは複数のデコレータ式でラップできます。デコレータ式は、関数定義を含むスコープで関数が定義されるときに評価されます。結果は、関数オブジェクトを唯一の引数として呼び出される callable でなければなりません。戻り値は、関数オブジェクトではなく関数名にバインドされます。複数のデコレータがネストされた方法で適用されます

于 2013-11-07T18:49:26.080 に答える
0

decoratorby@記号を使用して任意の関数をラップできます

def decor(fun):
    def wrapper():
        print "Before function call"
        print fun()
        print "Before function call"
    return wrapper

@decor
def my_function():
    return "Inside Function"

my_function()


## output ##
Before function call
Inside Function
Before function call

[注]classmethodstaticmethodのデコレータを使用して実装されていますpython

あなたの場合、と呼ばれる関数がありbatch_transform、あなたはimportedそれを持っています!

于 2013-11-07T18:55:03.927 に答える