Skip to main content

匿名函数

语法:函数名 = lambda 形参:返回值

lambda 是定义匿名函数的关键字,相当于函数的def。

调用:结果=函数名(实参)

示例

# 普通求和函数
def func(a, b):
return a + b
print(func(1,2))

3

# 匿名函数:对简单函数的定义
# 形参的数量按需加,加多少都可以,只要用逗号隔开就可以
# 将上面的求和函数修改成匿名函数的形式,注意语法格式:函数名 = lambda 形参:返回值
func = lambda a, b : a + b
print(func(1, 2))

3

# 在字符串中,返回索引中为0和2对应的元素
str1 = 'abcedfs'
# 法一
def funa(st):
return st[0], st[2] # 返回多个元素时,默认是以元组的形式返回的
print(funa(str1))

# 法二
funb = lambda st: (st[0], st[2]) # lambda 表达式时若返回的是一个元组时,则必须使用括号包起来,用来明确优先级
print(funb(str1))

# 下面这样是错误的,解析时变成了这样:func = (lambda st: st[0]), st[2]
func = lambda st: st[0], st[2]
print(func(str1))


('a', 'c')
('a', 'c')



---------------------------------------------------------------------------

NameError Traceback (most recent call last)

Cell In[12], line 13
10 print(funb(str1))
12 # 下面这样是错误的,解析时变成了这样:func = (lambda st: st[0]), st[2]
---> 13 func = lambda st: st[0], st[2]
14 print(func(str1))


NameError: name 'st' is not defined
str1 = 'abcedfs'
print(type(str1))
print(id(str1))


<class 'str'>
2093348226800
# 三目表达式
a = 4
b = 5
print(a) if a>b else print(b)
# 三目运算语法:表达式1或结果1 if 条件 else 表达式2或结果2

# 匿名函数实现上例
func = lambda x,y : x if x>y else y
print(func(4,5))


5
5
# 求平方
f = lambda x : x ** 2
print(f(3))


9