ещё питоновых грабелек
Jul. 4th, 2012 02:16 pmКто с ходу увидит ошибку?
for i in range(0,3):
test.acct_servers[i].handleAcctRequest = \
lambda p: handleAcctRequest(test, test.acct_servers[i], p)
Получившие данную шишку на лбу понимают, почему для порождения замыкания надо рисовать отдельную функцию.
UPD[2012-07-05]: от gegmopo4:
... lambda p, i=i: (далее по тексту)
Работает, но я не берусь отправлять такое в общее репо.
no subject
Date: 2012-07-07 05:51 pm (UTC)range(0,3)вместо нормальногоrange(3)? Первое, что приходит в голову (и наиболее вероятное) — опечатка или артефакт редактирования. Возможен ещё вариант разумного использования, если тут же рядом в коде есть range(1,4), range(2,5), range(-1,2) и т. п., причём в широком ассортименте. Но это очень, очень редкий случай. Остаётся ещё способности и вкусы кого-то, обладающего властью (чтобы принудить к этому питонистов), — т. е. просто самодурство.no subject
Date: 2012-07-08 06:53 am (UTC)То, что Вы не рассматриваете такую причину в принципе, а вместо этого придумываете какое-то "самодурство", говорит, что Вы не используете полезную экономию мышления. И это грустно.
no subject
Date: 2012-07-08 07:45 am (UTC)no subject
Date: 2012-07-10 06:48 pm (UTC)