Я запускаю простой код в Python 2.7, но он дает мне синтаксическую ошибку.Ошибка использования функции печати внутри функции лямбда в Python 2.7
hello = lambda first: print("Hello", first)
Сообщалось об ошибке SyntaxError: invalid syntax
.
Я запускаю простой код в Python 2.7, но он дает мне синтаксическую ошибку.Ошибка использования функции печати внутри функции лямбда в Python 2.7
hello = lambda first: print("Hello", first)
Сообщалось об ошибке SyntaxError: invalid syntax
.
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>
Есть ли способ использовать lambda x: print (x), а затем 1 + 1' внутри lamda, где 'then' представляет что-то, что просто отбрасывает тип' None' и возвращает правильное выражение? – CMCDragonkai
@CMCDragonkai Я, честно говоря, не могу придумать причину, по которой вы можете это сделать, но поскольку 'print' (функция) возвращает' None', вы можете использовать оператор 'or':' lambda x: print (x) или other_value'. – vaultah
'печать()' не является функцией в Python 2, если вы не добавите 'от __future__ импорта print_function' в верхней части вашего скрипта. Почему вы пытаетесь использовать его как функцию? –
@MartijnPieters Учебник, о котором я говорил, использовал тот же самый. Когда я попытался имитировать это, у меня появилась ошибка. Я пробовал то же самое без скобок, как мы обычно делаем в python 2.7, но это тоже не удалось. – TheChetan
Ваш учебник предназначен для Python 3; либо переключить учебники, либо установить Python 3, у вас появятся другие проблемы. –