Реальные копии функций в PythonPython

Программы на Python
Anonymous
 Реальные копии функций в Python

Сообщение Anonymous »

В Python 3 у меня есть следующий фрагмент кода:

Код: Выделить всё

x = [1,2,3]
test = []
for i in range(3):
def broken_func(a):
return x[i] + a
test.append(broken_func)
print('Test at creation :', test[-1](1), test[-1])

for func in test:
print('Test later :', func(1), func)
Идея состоит в том, чтобы создать список функций, но мои результаты говорят мне, что это не сработало:

Код: Выделить всё

Test at creation : 2 
Test at creation : 3 
Test at creation : 4 
Test later : 4 
Test later : 4 
Test later : 4 
Похоже, что выполнение всего последующего кода по-прежнему зависит от значения x, неудача при i=2, что является нежелательным поведением. Кстати: если я сделаю то же самое с лямбда x: ..., возникнет та же проблема. Я напечатал «функцию», чтобы показать, что все три функции действительно различны.
Есть идеи, как исправить код и помочь мне понять, почему он не работает?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-python

Вернуться в «Python»