在Matlab中,我可以編寫一個程序調用保存到外部文件的子函數。在那個子函數中,我可以使用變量而不用在本地聲明它們,只要它們已經在全局之前被定義。 python中的這種行爲也可能嗎?在類似於Matlab的Python中使用外部函數中的全局變量
一個例子是一個應該繪製一些東西的子函數。目前我路過numpy的(NP)和matplotlib(PLT)作爲參數傳遞給該函數
def plot_weights(weights,session,np,plt):
...
上面的例子來自tensorflow教程,所以session
代表一個tensorflow會話。
是否可以這樣定義
def plot_weights(weights):
...
的功能,使蟒蛇採取session
,np
,plt
一些全局變量?
您是否在尋找類似['global']的東西(http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created -他們)? – 2017-01-16 09:50:28
您正在倡導*命名空間污染*。當您嘗試通過添加更多模塊來擴展這個問題並且遇到名稱衝突(使用相同名稱的多個模塊)時,問題就出現了。您必須跟蹤每個模塊中使用的所有名稱,並且模塊作者無法更改任何內容。你必須小心,不要在你自己的代碼中使用這些名字。支持變成了一場噩夢,因爲你不知道誰改變了什麼,什麼時候改變。它也殺死小貓。 – cdarke
根據下面給出的答案,'global'並不意味着整個模塊都是全局的,所以我似乎無法真正繞過所有對象作爲函數參數。在numpy和matplotlib的情況下,我認爲我至少可以將它們導入到子函數本身中,而不是將它們作爲參數傳遞給它們?這聽起來像這個重裝模塊會很慢,但... – mcExchange