В python в большинстве случаев нет необходимости определять / объявлять переменные.
Правило состоит в том, что если вы пишете (присваиваете) переменную, то эта переменная является локальной переменной функции; если вы только читаете это вместо этого, то это глобально.
Переменные, назначенные на верхнем уровне (вне какой-либо функции), являются глобальными ... так, например:
x = 12 # this is an assignment, and because we're outside functions x
# is deduced to be a global
def foo():
print(x) # we only "read" x, thus we're talking of the global
def bar():
x = 3 # this is an assignment inside a function, so x is local
print(x) # will print 3, not touching the global
def baz():
x += 3 # this will generate an error: we're writing so it's a
# local, but no value has been ever assigned to it so it
# has "no value" and we cannot "increment" it
def baz2():
global x # this is a declaration, even if we write in the code
# x refers to the global
x += 3 # Now fine... will increment the global
Оператор for
- это просто цикл, который записывает в переменную: если объявление не присутствует, то переменная будет считаться локальной; если существует объявление global
или nonlocal
, то используемая переменная будет иметь соответствующую область видимости (nonlocal
используется для записи в локальную переменную включающей функции из кода во вложенной функции: она не очень часто используется в Python ).