You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数式编程中如何定义函数?Python偶数判断函数实现问题求助

问题原因
  • 现有代码的evenOrOdd函数接收参数后没有做计算,直接返回了未执行的lambda函数对象,所以打印结果是函数内存地址,不是布尔值。
  • 外层函数接收的参数x和lambda内部定义的参数x分属不同作用域,外层传入的数值完全没有被使用,属于冗余设计。
符合函数式编程规范的实现

函数式编程要求使用无副作用、输入确定则输出确定的纯函数,Python中以下两种实现都符合规范:

实现1:直接使用lambda定义(利用函数是一等公民的特性)

lambda本身就是匿名函数,可以直接赋值给变量作为函数使用,没有多余嵌套,简洁符合函数式设计思想:

evenOrOdd = lambda x: x % 2 == 0

print(evenOrOdd(1))
print(evenOrOdd(2))
print(evenOrOdd(3))
print(evenOrOdd(4))

运行输出:

False
True
False
True

实现2:def定义纯函数

如果需要使用具名函数,直接返回判断表达式即可,也是标准的纯函数写法:

def evenOrOdd(x):
    return x % 2 == 0

调用方式和运行结果和第一种实现完全一致。

如果你非要保留原有嵌套lambda的结构,需要在获取返回的lambda后主动传入参数执行,例如print(evenOrOdd(None)(2)),但这种写法冗余无意义,外层参数完全无效,不推荐使用。

内容的提问来源于stack exchange,提问作者Jrblack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:07