2016-08-31 6 views
0

私は後に使用するために、(100000の周りに)Pythonでの関数のルールを大量に格納する必要が....関数リストを保存する最良の方法は何ですか?

def rule1(x,y) :... 
def rule2(x,y): ... 

格納するための最良の方法は何ですか、Pythonの構造にそれらの機能ルールのインスタンスを管理します?

何numpyののDTYPE = np.objectアレイを使用してはどうですか? (リストが大きすぎるとリストが悪い...)

主な目標は、メモリに格納するときに最短のメモリフットプリントでアクセスすることです。

おかげ

+2

?関数名の格納、関数呼び出しの保存、または関数インスタンスの格納を意味しますか? _rules_の意味は?関数のパラメータを格納することを意味しますか?ファイル内の –

+1

?あなたは明確ではありません –

+1

それをどこに保存するかによって異なります。ファイルですか?記憶に? –

答えて

2

機能はPythonでファーストクラスのオブジェクトです - あなたが他の変数または値を格納したいだけのようにあなたがそれらを格納することができます:あなたはこれらのルールを使用する場合

def a(): 
    pass 

def b(): 
    pass 

funcs = [a,b] 
funcs[0]() # calls `a()`. 
1

、あなたが行っていますそれらを参照する必要があります何とか。あなたの例が命名規則のヒントであれば、リストに行きましょう。それらを順番に呼び出すことは、mapまたはループで簡単に行うことができます。

rules = [rule1, rule2, ...] 
for fn in rules: 
    fn(arg1, arg2) # this calls rule1 and rule2 with args (as an example) 

あなたも同じように、辞書を使用し、その後、名前によってそれらを参照する可能性がある場合:あなたは正確に何を意味する

rules = {'rule1': rule1, 'rule2': rule2, ...} 
something = rules['rule5'](arg1, arg2) 
# or 
for rule in rules: # iterates over the dict's keys 
    rules[rule](arg1, arg2) 
+0

これも私の元々の考えでした。彼は関数の引数のリストを格納したがっていました。しかし、関数インスタンスを格納する可能性が高いようです。 –

+0

私は関数の引数を格納するのではなく、関数自体を使用しています。 'some_args'を使って引数がどこに行くのかを示します。 – aneroid

+0

さて、私はあなたが今何をしているのか分かります。 –

関連する問題