Я пытаюсь перебрать lambda func над списком, как в test.py
, и я хочу получить результат вызова лямбда, а не сам объект функции. Однако следующий результат действительно смутил меня.
------test.py---------
#!/bin/env python
#coding: utf-8
a = [lambda: i for i in range(5)]
for i in a:
print i()
--------output---------
<function <lambda> at 0x7f489e542e60>
<function <lambda> at 0x7f489e542ed8>
<function <lambda> at 0x7f489e542f50>
<function <lambda> at 0x7f489e54a050>
<function <lambda> at 0x7f489e54a0c8>
Я изменил имя переменной, когда напечатаю результат вызова до t
следующим образом, и все будет хорошо. Мне интересно, что это значит?
--------test.py(update)--------
a = [lambda: i for i in range(5)]
for t in a:
print t()
-----------output-------------
4
4
4
4
4