python中匿名函数的关键字_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)

运行结果如下:

20190315161744694.png

我们可以通过运行结果看出,排序是根据首字母在字母表中出现的先后顺序进行的,实现对列表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))

运行结果如下:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdfZm9yX2NzZG4=,size_16,color_FFFFFF,t_70

以上代码实现了匿名函数做实参的功能。主要是通过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)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdfZm9yX2NzZG4=,size_16,color_FFFFFF,t_70

而使用python3运行则会报错:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdfZm9yX2NzZG4=,size_16,color_FFFFFF,t_70

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdfZm9yX2NzZG4=,size_16,color_FFFFFF,t_70

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdfZm9yX2NzZG4=,size_16,color_FFFFFF,t_70

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值