2016-02-13 66 views
0

我已經開始這個問題就熊可選項,但我不能確定如何與工廠功能部分進行:工廠功能的意見/解釋

一)熊選項回報 see image

我必須寫一個返回支付值的python函數。

def bear(S,K): 
    if S <= K: 
     value = K 
    elif K < S and S < 2*K: 
     value = 2*K - S 
    else: 
     value = 0 
    return value 

下一部分... b)中「也寫一個工廠函數返回一個變量的熊期權收益功能,其中K固定」。

我找不到一個工廠函數的簡單解釋,我剛剛開始編寫代碼,筆記中也沒有提到工廠函數。任何鏈接到網頁,提示或解釋將非常感謝!

+0

嘗試在谷歌搜索工廠設計模式。 –

回答

1

他們要你做的是寫一個返回另一個函數,它可以被用來計算bear(S, K)爲K的固定值

def bear_for_k(K): 
    return lambda S: bear(S, K) 

演示功能:

>>> bear(21, 17) 
13 
>>> bear_for_k17 = bear_for_k(17) 
>>> bear_for_k17(21) 
13 
>>> bear(112, 81) 
50 
>>> bear_for_k81 = bear_for_k(81) 
>>> bear_for_k81(112) 
50 

編輯在迴應評論:

嘗試以下文件:

def bear(S,K): 
    if S <= K: 
     value = K 
    elif K < S and S < 2*K: 
     value = 2*K - S 
    else: 
     value = 0 
    return value 

def bear_for_k(K): 
    return lambda S: bear(S, K) 

#test: 
print(bear_for_k(17)(21)) 

This will打印13,沒有錯誤,在Python2和Python3中。

+0

非常感謝,現在我看到它很明顯:/不幸的是,我得到一個「名稱」熊「沒有定義」的錯誤。你知道這是爲什麼嗎?我會在網上尋找答案,希望我能解決問題。 –

+0

@ G.Ben這意味着您在問題中發佈的函數「熊」無法找到,您確定它在同一個文件中或者您已經導入了它嗎? – timgeb

+0

是的,我剛剛創建了一個新文件,只顯示了代碼和您建議的代碼,但在python控制檯中出現了相同的錯誤。它可能是我正在運行的版本? –