2016-02-13 61 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控制台中出现了相同的错误。它可能是我正在运行的版本? –