2016-08-29 39 views
0

我使用交互式解釋器進行數據分析,所以我傾向於定義函數並在需要時調用它們。在這種情況下,我想調用一些功能:Python:傳遞局部變量引用作爲字符串

def function(var): 
    do stuff 
    ax.plot(x, y) 
    blah 
    ax.set_title('var') 

其中var在函數調用ndarray和VAR在SET_TITLE是ndarray的參考。

module.function(foo, 'foo') 

現在,我的功能需要更多的變量和:一個例子通話 -

我目前正在

def function(var, varstring): 
    do stuff 
    ax.plot(x, y) 
    blah 
    ax.set_title(varstring) 

其中var是foo和varstring僅僅是 '富' 這個實施複製一遍又一遍都很不方便,但我無法弄清楚如何將var變成'var'..任何嘗試這樣做都會爲我提供一串ndarray值。

+0

使用'str.format()'。 'module.function(foo,'{}'。format(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) 

,然後調用module.function('foo')

相關問題