2015-07-25 3 views
1

Я запускаю простой код в Python 2.7, но он дает мне синтаксическую ошибку.Ошибка использования функции печати внутри функции лямбда в Python 2.7

hello = lambda first: print("Hello", first) 

Сообщалось об ошибке SyntaxError: invalid syntax.

+3

'печать()' не является функцией в Python 2, если вы не добавите 'от __future__ импорта print_function' в верхней части вашего скрипта. Почему вы пытаетесь использовать его как функцию? –

+0

@MartijnPieters Учебник, о котором я говорил, использовал тот же самый. Когда я попытался имитировать это, у меня появилась ошибка. Я пробовал то же самое без скобок, как мы обычно делаем в python 2.7, но это тоже не удалось. – TheChetan

+0

Ваш учебник предназначен для Python 3; либо переключить учебники, либо установить Python 3, у вас появятся другие проблемы. –

ответ

4

Python запрещает использование операторов в lambda expressions:

Обратите внимание, что функции, созданные с помощью лямбда-выражений не могут содержать заявления или аннотации.

print это заявление в Python 2, если вы не импортировать функцию print_function из __future__:

>>> lambda x: print(x) 
    File "<stdin>", line 1 
    lambda x: print(x) 
       ^
SyntaxError: invalid syntax 
>>> from __future__ import print_function 
>>> lambda x: print(x) 
<function <lambda> at 0x7f2ed301d668> 
+0

Есть ли способ использовать lambda x: print (x), а затем 1 + 1' внутри lamda, где 'then' представляет что-то, что просто отбрасывает тип' None' и возвращает правильное выражение? – CMCDragonkai

+0

@CMCDragonkai Я, честно говоря, не могу придумать причину, по которой вы можете это сделать, но поскольку 'print' (функция) возвращает' None', вы можете использовать оператор 'or':' lambda x: print (x) или other_value'. – vaultah