2016-08-29 15 views
0

私はデータ解析のためにインタラクティブなインタプリタを使用しています。したがって、私は関数を定義し、必要なときに呼び出す傾向があります。この場合、私はいくつかの関数を呼び出すしたいと思います:Python:文字列としてローカル変数参照を渡す

関数呼び出しのvarがset_titleでndarrayとVARある
def function(var): 
    do stuff 
    ax.plot(x, y) 
    blah 
    ax.set_title('var') 

はndarrayの参照です。

私は現在

varがfooとvarstringは単に 'foo' のある
def function(var, varstring): 
    do stuff 
    ax.plot(x, y) 
    blah 
    ax.set_title(varstring) 

でこれを実装しています - 例のコール:今

module.function(foo, 'foo') 

、私の機能は、より多くの変数を取り、何度も何度も何度も複製するのは面倒ですが、varを 'var'として取得する方法はわかりません。そのようにしようとすると、ndarray値の文字列が表示されます。

+0

を呼び出します。 'module.function(foo、 '{}'。書式(foo))'です。 – Kasramvd

答えて

2

インタープリタで作業している場合、変数はグローバルスコープ内にある可能性があります。したがって、var = globals()[varstring]を使用してそれらにアクセスし、各関数に文字列名を渡すことができます。

オブジェクト(var)は、その名前(varstring)の知識がないため、グローバル名をオブジェクト自体ではなく関数に渡す必要があることに注意してください。

+2

私は 'globals()'ではなくユーザ定義の辞書で検索をお勧めします。 – hpaulj

-1

あなたはこの方法であなたの関数を定義する必要があります。その後、

def function(varstring): 
    var = globals()[varstring] 
    # do stuff with `var` variable 
    ax.plot(x, y) 
    ax.set_title(varstring) 

と `str.formatを()`を使用しmodule.function('foo')

関連する問題