У меня есть функция в файле:
global_value = 100 #defualt
def function(new_value):
global global_value
print(global_value,new_value)
global_value = new_value
function() принимает значение, сравнивает его с global_value, а затем устанавливает global_value в new_value.
Я не использую эту функцию в файле, а импортирую ее.
(файл2:)
from file import *
value = input("enter value")
function(value)
print(global_value)
Функция работает правильно, однако в конце global_value показывается равным 100 (это значение по умолчанию), а не ввод. Что я могу сделать, чтобы изменить global_value и в файле2?
Благодарю.
Если не считать отсутствующего :, ваш код работает нормально, когда я его пробую.
@khelwood Какова ценность global_value после запуска этого кода? Я получаю 100, и я думаю, что вопрос именно об этом.
Каждый проход цикла правильно сообщает мне значение из предыдущей итерации и значение, введенное в этой итерации. Если на каком-то более позднем этапе чтение global_value дает другое значение, этот код должен быть частью вопроса вместе с выводом.
да, похоже, что каждый раз, когда я запускаю функцию global_value, она переопределяется с ее значением по умолчанию.
@yonatanstrichman Добавьте цикл print(global_value) after for`, чтобы было понятнее, что вы имеете в виду. Совсем не нужен цикл for, чтобы проиллюстрировать ваш вопрос.






Глобальные переменные в Python на самом деле не являются глобальными; они привязаны к конкретному модулю.
После выполнения from file import * у вас есть переменные два; file.global_variable, который обновляется file.function, и новый global_variable в текущем модуле, который инициализирован использует исходное значение file.global_variable, но никогда не обновляется function.
Каждая функция содержит ссылку на глобальную область, в которой функция была определенный. В Python 2 это file.function.func_globals; в Python 3 это tmp.function.__globals__. Это область, в которой просматривается любая из его «глобальных» переменных, а не область, в которой функция называется.
Добавьте простой import file ко второму файлу, затем запустите print(global_variable, file.global_variable), чтобы увидеть разницу.
:отсутствует послеrange(5)