一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下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关键字的更多相关文章

  1. day11函数的参数,函数对象 - 函数名,函数的嵌套调用

    复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...

  2. C语言中数组名作为参数进行函数传递

    用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的 ...

  3. Swift 函数做参数和闭包做参数的一个细节差别

    函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...

  4. js中函数的参数为函数的情况即回调函数

    js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...

  5. 函数的参数是函数,函数中Ajax返回的回调函数中的函数运行

    调用函数 checkAjax('addrinfo',formdata,vzxcv); 函数checkAjax function checkAjax(url,formdata,call_back){ / ...

  6. JS函数 有参数的函数 参数可以多个,根据需要增减参数个数。参数之间用(逗号,)隔开

    有参数的函数 上节中add2()函数不能实现任意指定两数相加.其实,定义函数还可以如下格式: function 函数名(参数1,参数2) { 函数代码 } 注意:参数可以多个,根据需要增减参数个数.参 ...

  7. python3中的缺省参数和global

    关于py中缺省参数: 在声明函数的时候对某些参数(一个或多个)进行赋值,在你调用的时候无需在实参列表中体现该参数,但是在执行的时候会默认加上这个已经在形参中定义好的参数. 但是,缺省参数必须放在最后, ...

  8. Python3中dict字典的相关操作函数

    字典对象的内建函数 1. clear() 清空字典. 例: >>> a = {1:3, 2:4} >>> a.clear() >>> a {} 2 ...

  9. Python3中string内置参数

    说明: 使用ipython查看python3的内置函数 ,只需要输入字符串按两下tab键 capitalize():将字符串中第一个字符大写 casefold:将字符串中的所有大写字母转为小写 cen ...

随机推荐

  1. UF_CLONE 克隆操作

    Open C UF_CLONE_add_assembly  添加装配到克隆操作UF_CLONE_add_part           添加部件到克隆操作UF_CLONE_apply_defaultsU ...

  2. 【NX二次开发】多种变换

    变换的种类: uf5942 矩阵乘积变换 uf5943 平移变换 uf5944 缩放变换 uf5945 旋转变换 uf5946 镜像变换 最后使用 uf5947 实现uf5942-uf5946的变换. ...

  3. Pipeline模式与Factory+Provider模式的应用

    前言 我正在写FastGithub这个小麻雀项目,里面主要涉及了Pipeline模式和Factory+Provider模式,这两种设计模式,让这个项目在"ip扫描"和"i ...

  4. 既然有 HTTP 请求,为什么还要用 RPC 调用?

    首先,实名赞扬题主的问题.这个问题非常好. 其次,实名反对各个上来就讲RPC好而HTTP不好的答案.因为,题主的观点非常对. HTTP协议,以其中的Restful规范为代表,其优势很大.它可读性好,且 ...

  5. Redis压测

    测试命令 ​ 这条命令redis自带 redis-benchmark [option] [option value] redis 性能测试工具可选参数如下所示: 序号 选项 描述 默认值 1 -h 指 ...

  6. rabbitmqctl 命令整理

    虽然还有http 接口.web admin组件可以进行管理,但是rabbitmqctl 基本包含了 rabbitmq 的全部管理功能,更为全面. 所以将其使用方法总结于此. 一,命令格式 rabbit ...

  7. 注解式项目开发!详细解析Java中各个注解的作用和使用方式

    @Target 作用: 指明了修饰的这个注解的使用范围, 即被描述的注解可以用在哪里 @Target(ElementType.Type) ElementType取值的类型: TYPE: 类,接口或者枚 ...

  8. 24、Keepalived高可用介绍

    24.1.什么是keepalived: Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP ...

  9. 33、awk命令详解

    33.1.命令介绍: awk不仅仅是linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告. awk的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,aw ...

  10. css 设置body背景图片铺满

    background-image: url(../../../assets/images/workflow/work.png); background-repeat: no-repeat; backg ...