2016-03-04 38 views
0

在Python解釋器,我可以定義一個函數是1但不print(1)無元lambda功能

>>> lambda: 1 
<function <lambda> at 0x023D03F0> 
>>> lambda: print(1) 
    File "<stdin>", line 1 
    lambda: print(1) 

爲什麼?

回答

1

發生這種情況是因爲(至少在傳統的Python 2中),print不是函數,而是一個聲明 - 所以它在lambda體中沒有意義。

在Python 3,或在Python 2啓用了print_function選項,print是一個函數,並且它在一個lambda工作:

>>> from __future__ import print_function 
>>> lambda: print(1) 
<function <lambda> at 0x7f69ab049578> 
>>>