目录
前言
1、匿名函数的定义
2、匿名函数的语法格式
3、实现方式
4、匿名函数的应用拓展
5、匿名函数的优点
6、有名函数和匿名函数的区别
什么是匿名函数?匿名函数的应用场景?匿名函数的实现方式?
匿名函数就是没有名字的函数,它主要应用在需要一个函数、但是后面又不会在需要,更不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。
name = lambda [arg1 [,arg2,...,argn]]:expression
相关参数如下:
name:用于调用lambda表达式。
[arg1 [,arg2,...,argn]]:可选参数,用于指定要传递的参数列表,多个参数间使用逗号“,”分隔。
expression:必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。
需求:将下列的有名函数改为匿名函数并调用
# 有名函数
def func(x, y):
return x + y
步骤一:定义匿名函数
# 1.lambda 关键字后面直接跟函数的参数
# 2.在写的过程中我们直接给参数赋值也是可以的例如:y=1
# 3.参数写完之后我们在后面写冒号
# 4.写完之后我们直接在参数后面写子代码就可以了
# 5.函数的子代码是一个return返回值,
# 6.我们直接去掉return写返回值就可以了
lambda x, y=1: x + y
步骤二:调用匿名函数
print(lambda x, y=1: x + y)
>>>输出结果:
at 0x00000286F58FE438>
# 可以看到这是一段函数地址
Process finished with exit code 0
(lambda x, y=1: x + y)(1, 2)
>>>输出结果:
Process finished with exit code 0
print((lambda x, y=1: x + y)(1, 2))
# 因为上面的y我们给了一个默认值,所以我们可以只传一个参数给它再运行试试看
print((lambda x, y=1: x + y)(1))
>>>输出结果:
3
2
Process finished with exit code 0
(1)操作型匿名函数
引用上面的代码,将子代码改为类似于print的可操作的匿名函数。
print((lambda x, y=1: print(x + y))(1))
# 因为函数没有返回值,所以最外层print的时候结果为None
>>>输出结果:
2
None
Process finished with exit code 0
(2)单条件匿名函数
# 如果x>y输出x,否则输出y
print((lambda x, y=1: x if x > y else y)(3))
print((lambda x, y=1: x if x > y else y)(3, 6))
>>>输出结果:
3
6
Process finished with exit code 0
(3)多条件匿名函数
# 如果x>y输出x,x y else y if x < y else f'{x} {y}')(3))
print((lambda x, y=1: x if x > y else y if x < y else f'{x} {y}')(3, 6))
print((lambda x, y=1: x if x > y else y if x < y else f'x={x} y={y}')(1))
>>>输出结果:
3
6
x=1 y=1
Process finished with exit code 0
(4)多返回值匿名函数
在(3)中 我们返回两个值时是直接用了f表达式将两个值整合为一个字符串整体,那能不能直接不加修饰返回两个值呢?
# 如果x>y输出x,x y else y if x < y else x, y)(1))
>>>输出结果:
Traceback (most recent call last):
File "D:/1017-test.py", line 2, in
print((lambda x, y=1: x if x > y else y if x < y else x, y)(1))
NameError: name 'y' is not defined
Process finished with exit code 1
示例:求一个两个函数之和的函数
有名函数定义和调用:
def add(x, y):
return x + y
print(add(1, 2))
>>>输出结果:
3
Process finished with exit code 0
匿名函数定义和调用:
print((lambda x, y: x + y)(1, 2))
# 或者可以这样写
add = lambda x, y: x + y
print(add(1, 2))
>>>输出结果:
3
3
Process finished with exit code 0
声明:以上内容仅供学习交流,如有错误欢迎指正!!!