Почему это не работает?
lambda: print "x"
Это не одно утверждение, или это что-то еще? Документация кажется немного разреженной на том, что разрешено в лямбде ...
python
printing
lambda
python-2.x
Anycorn
источник
источник
Ответы:
А
lambda
тело «S должно быть одно выражение . В Python 2.xprint
это утверждение. Однако в Python 3print
это функция (а приложение-функция - это выражение, поэтому оно будет работать в лямбде). Вы можете (и должны для прямой совместимости :) использовать функцию печати с обратным портированием, если вы используете последнюю версию Python 2.x:источник
from __future__ import print_function
должно быть в начале кода? THXprint()
встроенный метод.В случаях, когда я использую это для простой заглушки, я использую это:
который работает отлично.
источник
то, что вы написали, эквивалентно
что также приводит к SyntaxError, python не позволяет назначить значение для печати в 2.xx; в python3 можно сказать
и это будет работать, потому что они изменили print, чтобы быть функцией вместо выражения.
источник
from __future__ import print_function
, что позволяет это в py2.xlambda: sys.stdout.write('hi')
Тело лямбды должно быть выражением, которое возвращает значение.
print
, Будучи заявление, не возвращает ничего, дажеNone
. Точно так же вы не можете присвоить результатprint
переменной:Вы также не можете поместить переменное присваивание в лямбду, так как присваивания являются операторами:
источник
Вы можете сделать что-то вроде этого.
Создайте функцию для преобразования оператора print в функцию:
И распечатать это:
источник
def printf(fmt, *args): print(fmt % args)
В Python 3.x печать МОЖЕТ работать в лямбде, не меняя семантику лямбды.
При специальном использовании это очень удобно для отладки. Я публикую этот «поздний ответ», потому что это практический прием, которым я часто пользуюсь.
Предположим, что ваша «неструктурированная» лямбда это:
Тогда ваша «инструментальная» лямбда это:
источник
Тело лямбды должно быть единым выражением .
print
это утверждение, так что это, к сожалению, нет.источник
Здесь вы видите ответ на свой вопрос.
print
это не выражение в Python, это говорит.источник