2015-12-22 108 views
0

我有文件說test1.py,它有可變var1 = ''並在test1.py的方法之一,我更新的var1如何從全局變量值在其他模塊蟒蛇

global var1 
var1 = 'new_value' 

,我可以通過test1.py中的其他方法打印更新後的值。 現在我有另一個文件test2.py其中我打電話給var1爲var_new = test1.var1 但是,當我打印它時,我仍然得到''。 我認爲在套件開始時它正在初始化所有模塊。但是當我在test2.py中調用方法時,它在初始化時獲得了值?我如何獲得更新的價值? 因此var_new打印''

如果我使用get_var()方法,那麼我得到更新值。所以我想我總是創造這個方法?

+1

in test2.py試試'test1.var1 =「new_value」' – Copperfield

+0

你是說從test2.py中分配新的值嗎?如果這種情況我可以重新分配,但不能使用我已經分配或更新的值? – user2661518

+1

發表你的test1.py和test2.py所以我們可以看到..(我希望它們不是很長) – repzero

回答

1

我想,我終於明白了一個問題,通過你的描述,你有這樣的事情

test1.py

var1="" 

def foo(): 
    global var1 
    var1="new_valor" 

def bar(): 
    print(var1) 

test2.py

import test1 
var_new=test1.var1 
print(var_new) 

,如果是這樣的話,是的,你得到一個空字符串,因爲你不調用foo修改var1,所以你必須先調用它或從test2修改,因爲foo沒有在負載ti時調用我讓var1保持它首次分配的值。

+0

是的!謝謝你是正確的問題。所以即使在調用test2之前調用foo(),它也會將var1打印爲「'。我想我必須使用get方法。謝謝 – user2661518

0

通過這樣做:

var1 = test1.var1 

您複製test1.var1串入VAR1的內容。但如果後來test1.var1被修改,var1不是。

>>> var1="test" 
>>> var2=var1 
>>> var2+= "a" 
>>> var2 
'testa' 
>>> var1 
'test' 

所以,如果你想獲得test1.var1的價值,你應該總是訪問它扔test1.var1

+0

是的,這是我如何訪問,但它打印'',我希望它會打印'new_value',因爲我修改它,不是嗎? – user2661518

+0

我應該......我做了如下試驗: test1.py ' 全球VAR1 VAR1 = '測試' ' test2.py ' 進口test1的 打印test1.var1 ' $ python test2.py test –

+0

在全局變量1之前,你是否將其賦值爲var1 =''? – user2661518