You need to enable JavaScript to run this app. 如何使用Python lambda函数非递归实现阶乘且不依赖内置函数
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python lambda函数非递归实现阶乘且不依赖内置函数

非递归Python lambda阶乘实现

报错原因

Python 中的 lambda 函数仅支持单个表达式作为返回值,不能直接包含 while 循环、变量赋值、return 这类多语句逻辑,你直接把普通函数的多语句逻辑写入 lambda 自然会触发语法错误。

可行实现代码

完全沿用你原有非递归阶乘逻辑的 lambda 实现如下,无递归,逻辑和你编写的 def 版本完全一致:

factorial_number = lambda num: exec("fact=1\nwhile num>=1:\n    fact = num * fact\n    num -= 1", globals(), locals()) or locals()["fact"]

测试示例

# 计算5的阶乘,输出结果为120
print(factorial_number(5))

实现逻辑说明

  • exec 函数用于执行传入的字符串形式代码块,这里直接复用了你编写的 while 循环阶乘逻辑
  • exec 执行完成后默认返回 None,因此用 or 运算符取后面的 locals()["fact"] 作为整个 lambda 的返回值
  • locals() 可以获取到 exec 执行上下文内的局部变量 fact,也就是最终计算出的阶乘结果

内容的提问来源于stack exchange,提问作者vijay bhargav karnati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 06:54:00