python3中匿名函数做参数,匿名函数做实参,eval关键字
一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下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语言的动态性。
python3中匿名函数做参数,匿名函数做实参,eval关键字的更多相关文章
- day11函数的参数,函数对象 - 函数名,函数的嵌套调用
复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...
- C语言中数组名作为参数进行函数传递
用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的 ...
- Swift 函数做参数和闭包做参数的一个细节差别
函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...
- js中函数的参数为函数的情况即回调函数
js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...
- 函数的参数是函数,函数中Ajax返回的回调函数中的函数运行
调用函数 checkAjax('addrinfo',formdata,vzxcv); 函数checkAjax function checkAjax(url,formdata,call_back){ / ...
- JS函数 有参数的函数 参数可以多个,根据需要增减参数个数。参数之间用(逗号,)隔开
有参数的函数 上节中add2()函数不能实现任意指定两数相加.其实,定义函数还可以如下格式: function 函数名(参数1,参数2) { 函数代码 } 注意:参数可以多个,根据需要增减参数个数.参 ...
- python3中的缺省参数和global
关于py中缺省参数: 在声明函数的时候对某些参数(一个或多个)进行赋值,在你调用的时候无需在实参列表中体现该参数,但是在执行的时候会默认加上这个已经在形参中定义好的参数. 但是,缺省参数必须放在最后, ...
- Python3中dict字典的相关操作函数
字典对象的内建函数 1. clear() 清空字典. 例: >>> a = {1:3, 2:4} >>> a.clear() >>> a {} 2 ...
- Python3中string内置参数
说明: 使用ipython查看python3的内置函数 ,只需要输入字符串按两下tab键 capitalize():将字符串中第一个字符大写 casefold:将字符串中的所有大写字母转为小写 cen ...
随机推荐
- 详解apollo的设计与使用
简介 apollo 是一款由携程团队开发的配置中心,可以实现配置的集中管理.分环境管理.即时生效等等.在这篇博客中,我们可以了解到: 为什么使用配置中心 如何设计一个配置中心 apollo 是如何设计 ...
- 题解 P3605 [USACO17JAN]Promotion Counting P
分块\(yyds\) ----关于线段树合并的题我用分块过掉这件事 题目传送门 先说正解 正解当然是线段树合并等一类做法了 至于解析...出门右转题解区第一篇 (就是他让我看不懂,然后用分块打的\(Q ...
- redis学习第二天
Redis 在 2.8.9 版本之后添加了 HyperLogLog 结构 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常 ...
- 轻松吃透实时时钟芯片DS1302软硬件设计,看完秒懂
今天我们来讨论一款老掉牙的实时时钟芯片DS1302.什么是实时时钟(RealTime Clock, RTC)呢?为什么我们需要它呢?假设你使用单片机实现万年历应用,一般的做法是这样的:设置中断后判断1 ...
- UnityPlayerActivity.java使用或覆盖了已过时的 API。
Root\Temp\gradleOut\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java使用或覆盖了已过时的 ...
- 22、oracle子查询
22.1.什么是子查询: 1.子查询就是在一条sql语句中嵌入select语句: 2.子查询可区分为关联子查询和非关联子查询,他们和主查询之间的执行顺序和关系是不同的: 22.2.关联子查询: 1.说 ...
- JVM到底是什么呢
在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.那JVM到底是什么呢? JVM是Java程序的运行环境,它同时也是一个操作系统的一个应用程序.一个进程,因此他也有他自己的运行生命周期, ...
- 通过RenderDoc真机抓取数据来落地验证和解决特效性能的问题
前言 需求是来自于我在为我司的一个线上RPG游戏做特效的性能优化的过程中,需要验证对特效的一个改动是否能够提高性能,当然这个改动是在不影响美术效果的前提. 特效性能问题 技能特效 主角的一个大招(技能 ...
- CentOS7 安装搭建docker环境
一.Docker简介 Docker 版本 :版本分为:社区版CE 企业版EE 社区版分为stable和edge俩种发行方式: stable版本:是季度版发行(三月一更新) edge版本:是月度版发行 ...
- centos Gitlab AD 集成
简述 Gitlab支持集成LDAP用户认证系统.兼容包括Microsoft Active Directory, Apple Open Directory, Open LDAP, 与389 Server ...