2013-10-04 40 views
2

我正在開發一堆具有相同基本結構的函數 - 它們需要兩個列表並使用一個循環爲兩個列表進行成對的特定操作(例如,一個將列表中的每個元素引入權力由第二個列表中的相應元素表示)。Python - 是否可以爲操作員設置變量?

由於所有這些功能只有運營商不同,我想知道 - 是否有可能爲運營商設置一個變量?例如,你可以做(​​類似的東西):

var = + 
var2 = 5 var 7  #var2 is now 12 

我知道,特別是不行的,但有什麼相似,它同樣工作的?

+1

'進口operator' – Doorknob

回答

2

嘗試以下操作:

>>> op = lambda a, b: a + b 
>>> result = op(5, 7) 
>>> result 
12 
+0

@KevinMills,你可以使用拉姆達體內abitrary表達('拉姆達A,B:(A + B) * 2')。但正如@kindall提到的,如果你只是簡單地添加,'operator.add'更簡潔,可能更快。 – falsetru

+0

這是比簡單定義和傳遞子功能更好嗎? – Kevin

+0

@KevinMills,如果你有多個語句要執行,你必須定義一個函數。如果只有一個表達式,則沒有區別。你可以通過'import dis; dis.dis(lambda a,b:a + b)'。 ;所以這是你的偏好,你使用哪一個。請參閱http://ideone.com/AHc6JQ – falsetru

7

是的!您需要operator模塊,它「將Python的內在運算符公開爲高效函數」。

import operator 

op = operator.add 
var = op(5, 7) 

正如@falsetru指出的那樣,lambda也很方便;在operator的功能將是凌晨快一點,雖然:

from timeit import timeit 
print timeit("add(5, 7)", "add = lambda x, y: x+y") # about 0.176 OMM 
print timeit("add(5, 7)", "from operator import add") # about 0.136 OMM 
相關問題