0

私はsageを使って、Pythonで書かれたスクリプトで異なるグラフを印刷しています。すべてのグラフを印刷できる汎用コードを作成しようとしています。たとえば、私は持っています:

g1 = graphs.BarbellGraph(9, 4) 
g2 = graphs.RandomNewmanWattsStrogatz(12, 2, .3)

グラフはパラメータの数とタイプに依存するため、さまざまなケースで機能するようにコードを調整する必要があります。

私のコード:

registry = {"graphs": graphs, "digraphs":digraphs}
methodtocall = getattr(registry["graphs"], "BarbellGraph")
result = methodtocall(2,3)
print(result)

結果として得られるこのコードで

graphs.BarbellGraph(2, 3) 

私の問題は、メソッドtocallが上記のコードで2つのパラメーターを受け入れ、選択したグラフのパラメーターの数に応じて変更したいことです。パラメータに対して動的にコードを変更するにはどうすればよいですか?

必要なパラメータが N 個ある場合

result = methodtocall(param1, ... ,paramN)

前もって感謝します

4

2 に答える 2

0

スターオペレーター(別名「splat」または「unpacking」オペレーター)を探していると思います:

result = methodtocall(*[param1, ... ,paramN])
于 2012-12-17T21:23:11.563 に答える
0

引数をリストに入れると、次のように関数を呼び出すことができます。

graphs.RandomNewmanWattsStrogatz(*parameter_list)

リストを位置引数として展開します。

位置引数を取る必要がある関数を書いている場合、同様の方法で任意の数の引数を受け取ることができます。

def my_function(*args):
    assert(type(args) == tuple)
于 2012-12-17T21:26:18.813 に答える