一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下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. 31.qt quick-使用SwipeView添加滑动视图-高仿微信V2版本

    在上章我们学习了ListView,然后实现了: 28.qt quick-ListView高仿微信好友列表和聊天列表,本章我们来学习SwipeView滑动视图,并出高仿微信V2版本: 1.Contain ...

  2. 深入理解Spring事务的那点事

    Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获 ...

  3. 点分治&cdq分治 总结

    游荡的孤高灵魂不需要羁绊之处. 洛谷题单 点分治 前置芝士 树的重心 树分治 例题略解 P3806 [模板]点分治1 板子题,先暴力找到整棵树的重心,然后先求出重心到各点的距离,进而算出他所在树的各个 ...

  4. Go语言获取Ubuntu所有网卡名

    Go语言获取Ubuntu所有网卡名 需求 获取当前机器下所有网卡名,以字符串数组的形式返回 实现demo package main import ( "fmt" "os/ ...

  5. python用random模块模拟抽奖逻辑(print修改end参数使打印结果不分行)

    import random   #引入random模块,运用random函数list_one=["10081","10082","10083" ...

  6. 如果给IIS添加防火墙入站配置,支持外部或者局域网访问

    背景简介 也许你试着在本机IIS运行了一些网站,但是奇怪的是,同网络的终端却无法访问你,这时候极有可能被防火墙拦截了,所以我们要找到正确的姿势来开启魔法了. 找到入站规则设置 不管你是Win7还是Wi ...

  7. 限流神器Sentinel,不了解一下吗?

    概述 书接上回:你来说说什么是限流? ,限流的整体概述中,描述了 限流是什么,限流方式和限流的实现.在文章尾部的 分布式限流,没有做过多的介绍,选择了放到这篇文章中.给大伙细细讲解一下 Sentine ...

  8. 发送 email (转)

    <?phpnamespace app\common\controller;//基类class Email{ /* Public Variables */ var $smtp_port; var ...

  9. Python+unittest+excel

    接口测试设计思想: 框架结构如下: 目录如下: readme: config下的run_case_config.ini 文件说明: run_mode: 0:获取所有sheet页 1: if case_ ...

  10. 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...