2016-05-10 5 views
2

私が尋ねる理由は純粋な好奇心です。特定の変数に適用する操作を事前に知らなかった場合や、再帰呼び出しの中で特定のレベルで異なる操作を適用することを事前に知らなかった場合や、おそらく特定のことをより簡単に、そして/またはより綺麗にする。Python - リスト(または変数)に操作(+ - * /)を格納する方法はありますか?

ただ推測しているにもかかわらず、本当に悪い考えかもしれないが、全体的に好奇心が強い。

+2

[ 'operator'](https://docs.python.org/2/library/operator.html#をチェックモジュール - 演算子)モジュール。 –

答えて

5

operatorモジュールを使用できます。

operatorモジュールは、Pythonの固有のオペレータに対応する効率的な機能 のセットをエクスポートします。たとえば、 operator.add(x, y)は、式x+yに相当します。関数 は、特別なクラスメソッドに使用される名前です。便宜上、 の先頭と末尾の__のないバリアントも提供されています。

だから、リスト内の "操作" を格納するのと同じくらい簡単です:

import operator 
operations = [operator.add, operator.sub] 
# add two numbers 
s = operations[0](1, 2) 
+0

それはかなり爪それほど:) –

+0

あなたが望む演算子がモジュール内にない場合は、単に関数にラップしてください。名前またはそれ以外のもの。 – Carcigenicate

0

はい関数をリストやdict(非常に便利かもしれません)に置くことができます。def、lambdasで宣言された関数、または既に定義されている関数をインポートすることができます。追加など)

関連する問題