Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2015 15:02:31

smile789
Зарегистрирован: 2015-01-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить значение переменной в другом модуле

Не получается изменить значение глобальной переменной другого модуля.
Я предполагаю, что значение должно стать True, а в результате вывода значения перменной вижу по прежнему False. Почему так?

from temp3 import my_var, print_var
my_var = True
print_var()

Офлайн

#2 Янв. 7, 2015 17:56:35

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Изменить значение переменной в другом модуле

my_var = True
этой строчкой вы создаете переменную, а не изменяете
import tmp3
tmp3.my_var = True
tmp3.print_var()
или сделать функцию которая изменяет значение переменной
set_myvar(True)



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Янв. 7, 2015 18:11:11

smile789
Зарегистрирован: 2015-01-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменить значение переменной в другом модуле

terabayt
import tmp3
tmp3.my_var = True
tmp3.print_var()

Да вот так вот у меня сейчас и сделано, просто интересно почему когда применяешь другой вид импорта почему-то получается что создаю перменную, а не изменяю.

Офлайн

#4 Янв. 7, 2015 18:28:04

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Изменить значение переменной в другом модуле

smile789
просто интересно почему когда применяешь другой вид импорта почему-то получается что создаю перменную, а не изменяю.
было бы интересно если было бы наоборот



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Янв. 8, 2015 03:00:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Изменить значение переменной в другом модуле

smile789
просто интересно почему когда применяешь другой вид импорта почему-то получается что создаю перменную, а не изменяю.
Потому что это не переменные, а имена, связанные с объектами.
Если в других языках переменные - это области памяти, названные определёнными именами, то в питоне нет переменных, а аналогичные конструкции выполнены в виде связок имён с объектами. Благодаря этому имена можно как привязывать к объектам, так и отвязывать от них.

>>> import sys
>>> 
>>> sys.version
'3.3.2 (default, Feb 11 2014, 10:35:02) \n[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)]'
>>> 
>>> sys = print
>>> sys('hello')
hello
>>>

Каждый объект определяет своё пространство имён, модуль - это тоже объект. С одним объектом может быть связано множество имён. Поэтому имена одного и того же объекта могут находиться в разных модулях.



Отредактировано py.user.next (Янв. 8, 2015 03:10:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version