好好说说什么是Python匿名函数

好好说说什么是Python匿名函数

      • 匿名函数
        • 匿名函数的示例
        • 匿名函数和普通函数传参的区别
        • 匿名函数与普通函数区别

匿名函数

  • 匿名即可以理解不想让别人知道你写的函数名是什么
  • 定义匿名函数不再需要 def 来定义,使用 lambda 关键字来定义
  • 匿名函数,不需带return,结果就是它的返回值
  • lambda 的主体是一个表达式,而不是代码段(只能实现一些简单功能)
  • 语法: lambda [arg1[,arg2,…argn]]:expression
    • []表过可以有参数,且可以有多个参数
    • 也可以不带参数

匿名函数的示例

  • 无参数
import random

# 返回一个0, 1之间随机数
num = lambda : random.random()
print(num())
  • 传入1个值,对这个值进行指定的操作后返回
# 定义匿名函数,且赋值给sum变量 num为参数,num+9为表达式
sum = lambda num: num+9
# 调用lambda函数,sum()可以理解为函数,传入参数1给num,
print(sum(1))
  • 传多个参
# 定义*args不定传数, sum(args)进行和相加
res = lambda *args: sum(args)
# 调用并传入
print(res(10, 20, 30))

# 对比普通函数写法
def add(*args):
    return sum(args)
print(add(10, 20, 30))
  • 表达式使用内置方法,如sum(),max(),min()等等
# 定义列表
list = [10, 20, 30]
# sum()求和
num = lambda x:sum(list)
# 调用函数,传入list
print(num(list))
  • 参数带有默认值
sum= lambda a, b=30: a + b
print('带有默认值:', sum(10))
print('修改默认值:', sum(10, b=1))
  • 可以在匿名函数后直接加上值,这就可以在指定场景中使用
# (3, 4)直接分别依次传给x和y
# 注意要分别加上括号
sum = (lambda x, y: x + y)(3, 4)
print('在函数后添加值:3 + 4 =', sum)
  • 使用if条件判断
# if条件判断  如果x大于y就打印字符串:大于,否则打印字符串:小于
num = lambda x, y: ("大于" if x> y else "小于")
print('8和6对比:', num(8, 6))
print('0和6对比:', num(0, 6))
# 打印结果
86对比: 大于
06对比: 小于

匿名函数和普通函数传参的区别

好好说说什么是Python匿名函数_第1张图片

匿名函数与普通函数区别

既然匿名函数那么简洁方便,那是不是匿名函数能直接代替普通函数呢?答案是否定的,可以比较下他们之间的区别:

  • 普通函数使用def声明函数,且需要定义函数名;匿名函数则无需定义函数名,使用lambda关键字即可
  • 普通函数可以有多条语句;匿名函数只能有一个表达式
  • 普通函数可以用于实现复杂的功能逻辑处理;而匿名函数一般用于实现一些简单的功能
  • 函数被多次调用则使用普通函数;单次调用使用匿名函数

你可能感兴趣的:(Python3基础,python,开发语言,numpy)