Python Lambda 表达式等价普通函数实现

Python Lambda 表达式等价普通函数实现

flyfish

Lambda 是 Python 中的匿名函数 ,用于快速定义单行、简单逻辑 的函数,

语法:lambda 参数: 表达式。

每一个 Lambda 用法都搭配等价的普通 def 函数实现

1. Lambda 基础

1.1 立即执行 Lambda(IIFE)

Immediately Invoked Function Expression 立即调用函数表达式

python 复制代码
# Lambda 写法:匿名+立即调用
print("立即执行lambda:", (lambda x: x + 1)(2))  # 输出3

# 等价普通函数:定义+立即调用
def add_one(x):
    return x + 1
print("等价普通函数:", add_one(2))

1.2 命名 Lambda

python 复制代码
add_one = lambda x: x + 1
print("命名lambda调用:", add_one(2))

1.3 多参数 Lambda

python 复制代码
# Lambda 写法
full_name = lambda first, last: f"Full name: {first.title()} {last.title()}"
print("多参数lambda:", full_name("guido", "van rossum"))

# 等价普通函数
def full_name(first, last):
    return f"Full name: {first.title()} {last.title()}"
print("等价普通函数:", full_name("guido", "van rossum"))

2. Lambda 支持的所有参数类型

Lambda 完全兼容 Python 函数的参数类型,和普通函数参数规则一致。

参数类型 Lambda 写法 等价普通函数
位置参数 (lambda x,y,z: x+y+z)(1,2,3) def f(x,y,z): return x+y+z
默认参数 (lambda x,y,z=3: x+y+z)(1,2) def f(x,y,z=3): return x+y+z
关键字参数 (lambda x,y,z=3: x+y+z)(1,y=2) def f(x,y,z=3): return x+y+z
可变位置参数 *args (lambda *args: sum(args))(1,2,3) def f(*args): return sum(args)
可变关键字参数 **kwargs (lambda **kwargs: sum(kwargs.values()))(one=1,two=2) def f(**kwargs): return sum(kwargs.values())
关键字-only 参数 (lambda x,*,y=0: x+y)(1,y=2) def f(x,*,y=0): return x+y
python 复制代码
# Lambda 合集
print("位置参数:", (lambda x, y, z: x + y + z)(1, 2, 3))
print("默认参数:", (lambda x, y, z=3: x + y + z)(1, 2))
print("关键字参数:", (lambda x, y, z=3: x + y + z)(1, y=2))
print("*args:", (lambda *args: sum(args))(1,2,3))
print("**kwargs:", (lambda **kwargs: sum(kwargs.values()))(one=1, two=2))
print("关键字-only:", (lambda x, *, y=0: x + y)(1, y=2))

# 等价普通函数合集
def f1(x,y,z): return x+y+z
def f2(x,y,z=3): return x+y+z
def f3(x,y,z=3): return x+y+z
def f4(*args): return sum(args)
def f5(**kwargs): return sum(kwargs.values())
def f6(x,*,y=0): return x+y

3. Lambda 语法 三元表达式

Lambda 写法

python 复制代码
odd_even = lambda x: "odd" if x % 2 else "even"
print("3是:", odd_even(3))   # odd
print("4是:", odd_even(4))   # even

等价普通函数(if-else 语句)

python 复制代码
def odd_even(x):
    if x % 2:
        return "odd"
    else:
        return "even"

print("3是:", odd_even(3))
print("4是:", odd_even(4))

输出

复制代码
3是: odd
4是: even

完整代码

cpp 复制代码
print("立即执行lambda:", (lambda x: x + 1)(2))  # 输出3

# 等价普通函数:定义+立即调用
def add_one(x):
    return x + 1
print("等价普通函数:", add_one(2))

add_one = lambda x: x + 1
print("命名lambda调用:", add_one(2))

# Lambda 写法
full_name = lambda first, last: f"Full name: {first.title()} {last.title()}"
print("多参数lambda:", full_name("guido", "van rossum"))

# 等价普通函数
def full_name(first, last):
    return f"Full name: {first.title()} {last.title()}"
print("等价普通函数:", full_name("guido", "van rossum"))


print("位置参数:", (lambda x, y, z: x + y + z)(1, 2, 3))
print("默认参数:", (lambda x, y, z=3: x + y + z)(1, 2))
print("关键字参数:", (lambda x, y, z=3: x + y + z)(1, y=2))
print("*args:", (lambda *args: sum(args))(1,2,3))
print("**kwargs:", (lambda **kwargs: sum(kwargs.values()))(one=1, two=2))
print("关键字-only:", (lambda x, *, y=0: x + y)(1, y=2))


def f1(x,y,z): return x+y+z
def f2(x,y,z=3): return x+y+z
def f3(x,y,z=3): return x+y+z
def f4(*args): return sum(args)
def f5(**kwargs): return sum(kwargs.values())
def f6(x,*,y=0): return x+y

print("位置参数:", f1(1, 2, 3))
print("默认参数:", f2(1, 2))
print("关键字参数:", f3(1, y=2))
print("*args:", f4(1,2,3))
print("**kwargs:", f5(one=1, two=2))
print("关键字-only:", f6(1, y=2))

输出

复制代码
立即执行lambda: 3
等价普通函数: 3
命名lambda调用: 3
多参数lambda: Full name: Guido Van Rossum
等价普通函数: Full name: Guido Van Rossum
位置参数: 6
默认参数: 6
关键字参数: 6
*args: 6
**kwargs: 3
关键字-only: 3
位置参数: 6
默认参数: 6
关键字参数: 6
*args: 6
**kwargs: 3
关键字-only: 3
相关推荐
天赐范式5 分钟前
天赐范式第181天:让耦合开始失稳——竞争耦合与线性失稳边界
python·数字生命·天赐范式·lyapunov指数·动态运行时·耦合失稳·laplacian矩阵
happylifetree31 分钟前
Python15:核心语法-数据存储与运算-字符串拼接
python
huisheng_qaq1 小时前
【Python基础篇-09】深入理解python的闭包与装饰器
python·闭包
编码者卢布2 小时前
【App Service 】WebJobs 多实例实验:谁在运行,什么时候运行?
开发语言·python
quantdash_cc2 小时前
Python 获取实时行情后如何进行批量筛选?从全市场快照到策略候选池
开发语言·python·数据分析·量化交易·股票数据·quantdash
小蜗 strong3 小时前
和电脑猜拳(随机程序应用)
服务器·前端·python
华研前沿标杆游学3 小时前
企业标杆游学|走进东莞OPPO总部✨探秘智造与品牌出海
python
大侠归来4 小时前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
LOVE️YOU4 小时前
Python 数据结构的本质:位置、对象引用、Hash 与可变性
数据结构·python·哈希算法
李航19834 小时前
自动动手开发图形引擎,不仅能AI建模,还能AI渲染
人工智能·python·计算机视觉·ai·ai编程