Мне интересно, почему работает следующий код Python:
def sum(a, b):
return a+b+c
c=3
print sum(1,2)
# result: 6
Я бы ожидал ошибку компиляции.
Как можно определить функцию sum
, если переменная c
отсутствует (я бы сказал, что c
не входит в область действия функции sum)?
Это то, что они называют закрытием?
Как я понял замыкания, переменная уже должна была быть "упомянута", как в следующих фрагментах кода (скопировано с с этого сайта ). Здесь x
уже упоминается (хотя и не «заполнен») выше определения функции inc()
.
def makeInc(x):
def inc(y):
# x is "closed" in the definition of inc
return y + x