一文看懂Python匿名函数

欢迎关注WX公众号:【程序员管小亮】

前言

在python 中,我们不仅仅定义普通的函数——就是使用def关键字定义的函数;同时还可以定义匿名函数。那么什么是匿名函数呢?

1、定义:

匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序,也就是没有名字的函数。

python 使用 lambda 来创建匿名函数。在Python中,lambda 作为一个关键字,作为引入表达式的语法。想比较def函数,lambda 是单一的表达式,而不是语句块。lambda 这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的。

2、语法格式:lambda 参数:表达式

lambda 语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开;冒号右边的为表达式,需要注意的是只能有一个表达式。由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收。

lambda [arg1 ,arg2,.....argn]:expression

#  lambda 参数列表:return [表达式] 变量
#  由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收

我的另一个博客中使用的例子来做一个简单地说明:

add = lambda x, y : x+y
add(1,2)  # 结果为3

等价于函数

def a(x, y):
    return x + y
print(a(1, 2))

关键字lambda表示匿名函数,冒号前面的x,y表示函数参数。

3、注意点:

lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。但是lambda 函数不能包含命令,包含的表达式不能超过一个,不用写return,因为返回值就是该表达式的结果。

4、匿名函数优点:

1)使用Python 写一些脚本时,使用lambda 可以省去定义函数的过程,让代码更加精简。

2)对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda 不需要考虑命名的问题。

>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x10453d7d0>
>>> f(5)
25

3)使用lambda在某些时候然后代码更容易理解。

5、应用:

在内置函数max()求最大值,min()求最小值, map()映射, reduce()合并, filter()过滤中会用到!

# map()映射
def f(x):
    return x * x
print(list(map(f,[1,2,3,4,5,6,7])))
>>> [1, 4, 9, 16, 25, 36, 49]
# reduce()合并
from functools import reduce

def add(x,y):
    return x + y
print(reduce(add, range(1, 101)))
>>> 5050
#  filter()过滤
def is_odd(n):
    return n % 2 == 1
newlist = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
print(newlist)
>>> [1, 3, 5, 7, 9]

python课程推荐。
在这里插入图片描述

参考文章:
### Python入门教程 #### 一、Python简介 作为一种高级编程语言,Python因其简洁清晰的语法而广受欢迎。这种特性使得它成为初学者的理想选择[^1]。 #### 二、基础语法规则 ##### 变量与数据类型 变量无需声明即可直接赋值使用,在Python中支持多种基本的数据类型: - 整数(int): 表示整数值, 如 `a = 10`。 - 浮点数(float): 表示带有小数部分的实数, 如 `b = 3.14`。 - 字符串(str): 使用单引号或双引号包裹的一系列字符, 如 `c = "hello"` 或者 `d = 'world'`。 - 布尔(bool): True 和 False 是唯一的两个布尔值。 ```python integer_example = 123 float_example = 123.456 string_example = "example" boolean_example = True ``` ##### 控制结构 控制流语句用于改变程序执行顺序,主要包括条件判断(if/elif/else)和循环(for/while): ```python if condition: do_something() elif another_condition: do_another_thing() else: final_action() for item in iterable_object: process(item) while expression_is_true: keep_doing_this() ``` ##### 函数定义 函数是一段具有特定功能可重复使用的代码块: ```python def function_name(parameters): """文档字符串""" # 执行逻辑... return result ``` #### 三、核心概念解析 ##### 面向对象编程(OOP) 面向对象是一种重要的编程范式,通过类(class)来创建自定义类型的实例(object),从而实现属性(attribute)和方法(method)封装。 ```python class ClassName: def __init__(self, param1, param2): self.attr1 = param1 self.attr2 = param2 def method(self): pass ``` ##### 异常处理机制 异常是指在程序运行过程中发生的错误情况,可以利用try-except-finally语句捕获并妥善处理这些意外状况。 ```python try: risky_operation() except SpecificException as e: handle_exception(e) finally: cleanup_resources() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是管小亮

一口吃掉你的打赏,嗝~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值