Вы не можете объединить оператор global
с присваиванием. Если вам нужны оба, поместите их в отдельные строки:
global D
D = whatever
Но использование глобальных переменных часто является плохой идеей. Обычно вы можете получить, используя локальные переменные или переменные экземпляра в объектно-ориентированном коде. Использование переменных экземпляра намного лучше, чем использование глобальных переменных, так как вы можете использовать много объектов одновременно, без того, чтобы все они спотыкались друг о друга, используя одинаковые имена переменных.
Если вы просто добавили строку global
, чтобы исправить проблему с D
, возможно, это связано с тем, что вы присваиваете ей только условно, а следующий тест if
ожидает, что она всегда будет иметь значение. В этом случае вы, вероятно, захотите сохранить D
локальной переменной, вам просто нужно инициализировать ее перед началом цикла:
D = initial_value
for i in range(8):
if something:
D = new_value
if some_condition(D): # this line requires D to always have a value!
... # do stuff