ещё питоновых грабелек
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-04 01:31 pm (UTC)Когда пишут фор в си-подобных языках, тоже пишут (i = 0; i < 10; i++), а не i <= 9. Всë ок, так удобно жить.
no subject
Date: 2012-07-04 01:32 pm (UTC)Не знаю, почему.
no subject
Date: 2012-07-04 01:34 pm (UTC)no subject
Date: 2012-07-04 01:50 pm (UTC)no subject
Date: 2012-07-04 01:52 pm (UTC)no subject
Date: 2012-07-04 02:06 pm (UTC)no subject
Date: 2012-07-04 02:23 pm (UTC)Если мы начинаем с 0, то индекс меньше длины. А если с 1, то меньше или равен - и начинают вылезать ошибки на 1 в разных местах. :(
Я когда-то видел статью, написанную внятнее, чем у Дейкстры, но в целом сначала думаешь "а что, прикольно", а потом все эти ошибки на 1 когда вылезут - становится совсем невесело.
Это надо сказать, что в Луа с ними проще, чем там в жс или в си - есть итераторы типа pairs/ipairs, которые вернут что надо, иначе бы циклы довольно стрëмно выглядели.
no subject
Date: 2012-07-05 08:27 am (UTC)