2015-12-22 5 views
0

У меня есть файл сказать test1.py и имеет переменную var1 = '' и в одном из методов в test1.py Я обновляю значение var1 вКак получить значение из глобальной переменной в другом модуле питона

global var1 
var1 = 'new_value' 

И я могу см. значение, обновленное путем печати его из другого метода в test1.py. Теперь у меня есть еще один файл test2.py В котором я вызываю var1 как var_new = test1.var1 Но когда я его печатаю, я все равно получаю ''. Я думаю, что в начале пакета он инициализирует все модули. Но когда я вызываю метод в test2.py, он получает значение, когда он инициализируется? Как получить обновленную стоимость? So var_new отпечатки ''

Если я использую метод get_var(), то я получаю обновленное значение. Так что, наверное, я всегда создавал метод?

+1

in test2.py try '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

да! спасибо, что это правильный вопрос. так что даже если я вызову foo() перед вызовом test2, он будет печатать 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

перед глобальным var1, вы назначили его как var1 = ''? – user2661518

Смежные вопросы