Почему:
p = lambda s: print(s)
неверный синтаксис, но:
def do_print(s): print(s) p = lambda s: do_print(s)
действительный
Тело лямбды должно быть выражением, а не утверждением.print - это оператор.
print
Обновление: как уже отмечалось, в 2.x print - это оператор, тогда как в Python 3 это функция.
какую версию python вы используете ?;в python 2.7 (и ранее) print - это оператор , а в python 3 это функция
это способ чтения языка, он не может сделать p = lambda s: print(s) все за один шаг