python3中匿名函数做参数,匿名函数做实参,eval关键字

本文深入探讨Python3中的匿名函数(lambda)应用,包括列表排序、函数参数传递及eval关键字的使用,通过实例展示如何对复杂数据结构进行操作,并解析eval在处理字符串表达式中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下py3中的匿名函数,以及匿名函数作为函数的参数的情况

主要通过以下实例来说明:

  实例一: 

newarr =[33,44444,6222,88,10]
#要实现对newarr的排序我们只要调用sort()方法即可实现newarr列表的元素从小到大排序,
# 实现从到到小的排序通过sort(reverse=True)
newarr.sort()
print(newarr)
newarr.sort(reverse=True)
print(newarr)

在以上代码我们是实现了对列表的排序,可是如果列表中包含字典我们该如何?如:

arr = [{"name":"laowang","age":22},{"name":"laoli","age":45}]

我们要实现对arr列表中的字典的name属性进行排序,该如何是好?----------匿名函数就可以办到,请看如下代码:

#匿名函数的应用
arr = [{"name":"xiaozhao","age":22},{"name":"laoli","age":45}]
#要实现对列表arr中字典中的name属性排序,需要用到匿名函数
arr.sort(key=lambda y:y['name'])
print(arr)

 运行结果如下:

我们可以通过运行结果看出,排序是根据首字母在字母表中出现的先后顺序进行的,实现对列表arr中字典中age属性的排序同理也可以实现 。

二:匿名函数做实参

  如果我们定义同一个函数要实现既可以实现两数相加和相减的功能,我们可以通过匿名函数做实参的方式实现。代码如下:

#使用匿名函数作为实参的例子
def test(a,b,fu):
    return  fu(a,b)
sum = test(22,11,lambda x,y:x+y)
difference = test(22,11,lambda x,y:x-y)
print("两数的和是:%d"%(sum))
print("两数的差是:%d"%(difference))

运行结果如下:

以上代码实现了匿名函数做实参的功能。主要是通过lambda关键字实现。

要了解Lambda关键字的,可以点一下。

三:eval关键字

我们知道在python2中的input看做是一个表达式,所以在py2中的我们手动输入匿名函数没有问题,如下代码是不会出差错的:

 

#coding=utf-8
#python2中input看做一个表达式运行,py3中把input看做字符串处理
def test(a,b,fu):
    result = fu(a,b)
    return result
r = input("请输入匿名函数:  ")
difference = test(22,11,r)
print(difference)

 

而使用python3运行则会报错:

 

这时候eval关键字就派上用场了 我们加eval关键字运行如下:

另外  你输入的是个式子也是可以的,如下:

 

这就说明 eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果,通俗说即使吧字符串转化为表达式去执行,这也说明了python语言的动态性。

 

### 函数定义与调用 在 Python 中,函数是通过 `def` 关键字来定义的。它允许开发者将一段具有特定功能的代码封装成一个可重复使用的模块。例如,下面是一个简单的函数定义: ```python def greet(): """显示简单的问候语""" print('Hello!') ``` 该函数名为 `greet`,不需要任何参数即可运行,并且会在被调用时打印出 "Hello!" [^1]。 要执行这个函数,只需要使用函数名后跟一对括号:`greet()`。这会触发函数体内的代码执行 [^3]。 ### 函数参数 函数可以接受输入值,这些输入值被称为参数。当定义函数时,可以在圆括号内指定这些参数。例如,如果想要创建一个能够对两个数字求和的函数,可以这样定义: ```python def add_two_numbers(a, b): result = a + b print(result) ``` 在这个例子中,`a` 和 `b` 是形式参数(形参),它们充当了实际传递给函数的具体数值(实参)的占位符。调用此函数时,需要提供两个具体的数值: ```python add_two_numbers(5, 7) # 输出 12 ``` 这里的 5 和 7 就是实际参数实参)[^3]。 ### 返回值 通常情况下,除了打印结果外,我们还希望函数能够返回一个值以供后续处理。为此,我们可以使用 `return` 语句。比如修改上面的例子使其返回计算的结果而不是直接打印: ```python def add_two_numbers(a, b): return a + b ``` 现在,当我们调用 `add_two_numbers(5, 7)` 时,它将返回 12,而不会自动打印出来。这样的好处是我们可以选择如何处理返回的结果,例如将其存储在一个变量中或者作为另一个函数调用的一部分 [^3]。 ### 内置函数概述 Python 提供了许多内置函数,如 `all()`, `any()`, `sorted()`, `map()`, `filter()`, `reduce()`, `eval()`, `zip()` 等等,它们提供了丰富的功能来简化编程任务。了解并掌握这些函数可以帮助编写更加简洁高效的代码 [^2]。 ### 高级特性 - **Lambda 函数**:匿名函数,适用于简单的一行表达式。 - **装饰器**:一种特殊类型的函数,用来修改其他函数或类的行为,无需修改其源码。 - **递归**:函数在其自身定义中调用自己的能力。 学习如何有效地利用这些高级特性可以让您的 Python 编程技能更上一层楼。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值