【Python基础】Python函数(匿名函数)

文章目录

  • 匿名函数
    • 函数作为参数传递
      • 小结
    • lambda匿名函数
      • 小结

匿名函数

函数作为参数传递

在前面的函数学习中,一种使用的函数,都是接受数据作为参数传入:

  • 数字
  • 字符串
  • 字典、列表、元组等

其实,我们学习的函数本身,也可以作为参数传入另一个函数内

def test_func(compute):
    result = compute(1, 2)
    print(result)

def compute(x, y):
    return x + y

test_func(compute)  # 结果:3

函数compute,作为参数,传入了test_func函数中使用。

  • test_func需要一个函数作为参数传入,这个函数需要接受2个数字进行计算,计算逻辑由这个被传入函数决定
  • compute函数接收2个数字对其进行计算,compute函数作为参数,传递给了test——func函数使用
  • 最终,在test_func函数内部,由传入的compute函数,完成了对数字的计算操作

所以,这是一种,计算逻辑的传递,而非数据的传递

就像上述代码那样,不仅仅是相加、相减、相处、等任何逻辑都可以自定义并作为函数传入

//什么叫计算逻辑的传递?

e.g.

def add(x,y):

​ return x + y

这个函数的功能是完成两数相加,其接收的参数是被相加的数字

所以当我们将数字传递进去的时候,传递的是数据

而test_func函数要求传入的是函数,[函数 是一堆代码的封装,即 在函数体中包含了具体的执行逻辑]

所以,要求传入函数,本质上是传入代码的执行逻辑

  • 传入数据的函数,它的计算逻辑是确定的,不确定的是被计算的数据
  • 传入逻辑的函数,数据是确定的,不确定的是计算的逻辑
# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
    result = compute(1, 2)  # 确定cpmpute是函数
    print(f"compute参数的类型是:{type(compute)}")
    print(f"计算结果:{result}")

# 定义一个函数,准备作为参数传入另一个函数
def compute(x, y):
    return x + y

# 调用,并传入函数
test_func(compute)  # 结果:3

小结

  1. 函数本身是可以作为参数,传入另一个函数中进行使用的。
  2. 将函数传入的作用 在于:传入计算逻辑,而非传入数据

lambda匿名函数

函数的定义中

  • def关键字,可以定义带有名称的函数
  • lambda关键字,可以定义匿名函数(无名称)

有名称的函数,可以基于名称重复使用

无名称的匿名函数,只可临时使用一次

匿名函数定义语法:

lambda 传入参数: 函数体(一行代码)
  • lambda是关键字,表示定义匿名函数
  • 传入参数表示匿名函数的形式参数,如:x,y表示接收2个形式参数
  • 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码

Tip:lambda不用return语句,默认直接return

# lambda 传入参数: 函数体(一行代码)

def test_func(compute):
    result = compute(1, 2)
    print(f"结果是:{result}")
# 通过lambda匿名函数的形式,将匿名函数作为参数传入
test_func(lambda x, y: x + y)
test_func(lambda x, y: x + y)

# 虽然不能重复使用 但十分简洁
# 只要代码是一行内容能够完成的 使用lambda会变得更加简洁

小结

  1. 匿名函数使用lambda关键字进行定义

  2. 定义语法:

    lambda 传入参数: 函数体(一行代码)
    
  3. 注意事项:

    • 匿名函数用于临时构建一个函数,只使用一次的场景
    • 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数

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