История изменений
Исправление tailgunner, (текущая версия) :
Охуеть замыкание
Тебе нужен был счетчик - вот тебе счетчик.
Ты пропатчил функцию-объект, тем самым вытащив наружу контекст
Ты настолько тупой, что не понял примера? Там «пропатчить» можно incr, никаких проблем.
def counter(initval):
def incr():
incr.val += 1
return incr.val
incr.val = initval
return incr
c1 = counter(0)
c2 = counter(0)
print c1()
print c1()
print c2()
incr - локальный объект, имею право «патчить».
Впрочем, после твоего «хуюпс, это легаси говно» твой запрет использовать nonlocal выглядит слегка лицемерным, так что получи и распишись:
def counter(val):
def incr():
nonlocal val
val += 1
return val
return incr
Пфф. Это эпический факап? Бозе мой, бозе мой.
Пфф. Это он и есть.
Самое эпичное здесь - попытки делать на основе этой мелочи выводы глобального масштаба и глобальной глупости.
грязные гвидоопущи
Без примеров кода - беспомощное кукареканье.
Исходная версия tailgunner, :
Охуеть замыкание
Тебе нужен был счетчик - вот тебе счетчик.
Ты пропатчил функцию-объект, тем самым вытащив наружу контекст
Ты настолько тупой, что не понял примера? Там «пропатчить» можно incr, никаких проблем.
def counter(initval):
def incr():
incr.val += 1
return incr.val
incr.val = initval
return incr
c1 = counter(0)
c2 = counter(0)
print c1()
print c1()
print c2()
incr - локальный объект, имею право «патчить».
Впрочем, после твоего «хуюпс, это легаси говно» твой запрет использовать nonlocal выглядит слегка лицемерным, так что получи и распишись:
def counter(val):
def incr():
nonlocal val
val += 1
return val
return incr
грязные гвидоопущи
Без примеров кода - беспомощное кукареканье.