2011-10-19 76 views
1

是否可以为数学运算符分配变量。python:使变量等于运算符(+,/,*, - )

这就是我目前得到的,只是一个样本(在现在键入它,所以不要对简单的错误忧)

if image == "lighten": 
    red_channel = red_channel + 50 
else: // image is darken 
    red_channel = red_channel - 50 

通知我是多么重复完全相同的代码,用不同的运营商。 是否有可能实现这样的事情:

if (image == "lighten"): 
    operator = + 
else: 
    operator = - 

red_channel = red_channel operator 50 

回答

6
import operator 
if (image == 'lighten'): 
    op = operator.add 
else: 
    op = operator.sub 

red_channel = op(red_channel, 50) 

或者,如果你有许多可能的操作,

op = { 
    'lighten':operator.add, 
    'darken':operator.sub, 
    ... 
    } 
red_channel = op[image](red_channel,50) 
+1

+1直接回答OP的问题,启发我去一个非常有用的功能。 –

1

另一种选择,而不是去那个长度,只要你只是做正50或负50是:

red_channel = red_channel + (flag * 50) 

变量“标志”是1或-1;从而给你50或-50。这不会为这个小例子节省很多代码,但是在方便时我会使用它。

+1

聪明的队友,我喜欢它:) – dgamma3

+0

我建议不要使用'flag',因为通常标志是布尔值。 –

2

我喜欢内联表达式,所以:

red_channel += 50 if image == 'lighten' else -50