2017-08-13 51 views
0

我的代碼中有一個導入的模塊。該模塊包含一個定義在其中的功能。該函數不返回任何值。在我的代碼中,我想訪問在該函數中聲明的變量。有沒有辦法做到這一點?導入類的函數中的訪問變量

編輯: 因此,OSS中有一個模塊正在生成語音序列。但語音序列變量不是全局的,函數也不返回語音序列。我想訪問我的插件中的語音序列。

+0

聽起來像[XY問題](https://meta.stackexchange.com/a/66378)。你想達到什麼目的?請提供一個[最小,完整且可驗證的示例](https://stackoverflow.com/help/mcve) ,它重現了您的問題。 –

+0

該函數的作用域中的變量?如果沒有對模塊或代碼的任何引用,很難說明,但是你不應該訪問函數範圍中定義的變量。 – cole

+0

編輯,與問題。 –

回答

0

如果你的函數如下所示:

def function(): 
    ... 
    my_variable = "foo" 

然後你就可以添加參數,這將迫使該變量要與正在返回任何東西一起返回。所以這個函數看起來像這樣。

def function(get_variable=False): 
    ... 
    return_variable = "bar" 
    my_variable = "foo" 
    if get_variable: 
     return (my_variable, return_variable) 
    else: 
     return return_variable 

,然後訪問它像這樣:

import module 


my_variable, return_variable = module.function(get_variable=True) 

你不需要這種破解的,如果你的函數不返回任何東西。只要讓它返回你想要的變量,並將它分配給你的主代碼範圍內的東西。

+0

我已經知道了。但是,正如我所提到的那樣,這是一個開源軟件,我建立了一個插件,因爲它暫時不能進行更改。因此,這種黑客不可能工作? –

+0

我不認爲有任何其他的方式來實現這一點..你仍然可以編輯源,以滿足您的需求,雖然.. –

+0

我可以幫助你,如果你願意,只要告訴我哪個模塊,函數和變量你想:) –