2011-10-19 73 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