>

Офигеть

10 декабря 2007 // Хельги

fs = []

for x in [1, 2, 3]:
    fs.append(lambda : x)

for f in fs:
    print f(),

Вот такая простая программа выводит 3 3 3, хотя вроде как должна 1 2 3. Кто может объяснить, почему?

Update: Ответ Глайдера.

Редакция от 15 октября 2009
Тэги: python, tech
Комментарии (2)

XKCD: PythonПоклонникам творчества Бормора

Обсуждение

1. Glider

Я могу. Это закономерное поведение: x ведь так и остается связан с переменной цикла.

А у тебя регистрация не работает :Р

91.77.53.66   оставлено 18 декабря 2007 в 0:44  

 

2. Хельги (администратор)

У меня регистрация и должна не работать, там нет ни защиты от ботов, ни проверки администратором. И вообще я надеюсь сделать login with OpenID. Тогда и регистрация будет лишней.

89.178.100.101   оставлено 18 декабря 2007 в 2:44  

 

Написать комментарий

На этот адрес будут приходить только уведомления о новых комментариях к этой записи.
Чтобы отправить комментарий, введите сюда слово «человек».
« »  
Высота поля:
Разрывы строк (Enter) будут сохранены. HTML не работает. Гиперссылки: вставьте URL.

Ваш комментарий появится после одобрения модератором.