@Onigire

Как вывести результат лямбда функции?

Имеется такой код, который находит факториал числа, но распечатать результат я не могу, потому что он зашифрован.

print(f := (lambda x=int(input()): 1 if x == 1 else x * f(x-1)))

Вывод: <function <lambda> at 0x0000024CF90E3E20>
Скорее всего я как то неправильно использую оператор :=, но проведя аналогию с этим:
print(a := 10)
>>> 10

Мне показалось что это должно работать. Вопрос, что здесь происходит и что я делаю не так?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@bacon
1. а где ты вызываешь эту функцию?
2. если приводить аналогию с обычной функций, ты описал def f(x=int(input())): смысла особого тут нет, ты на этапе определения функции, ожидаешь пользовательский ввод и присваиваешь x этот ввод как значение по умолчанию.
3. ну и сразу, с := рекурсия с lambda не проканает, тут же в f прилетает значение функции, т.е число, а ты потом его вызываешь как функцию. Точнее проканает если потом вызвать f, а не в одну строку (чтобы сразу и вычисляло) это делать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы