python之有关匿名函数和偏函数的定义,优点,以及使用方法

导读:本篇文章讲解 python之有关匿名函数和偏函数的定义,优点,以及使用方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

匿名函数(lambda)的定义:

在python中,不用通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数,lambda函数能接收任何数量的参数,但只能返回一个表达式的值,该变量就成了一个函数对象。

语法:lambda 参数:表达式(多个参数中间用逗号连接)

使用lambda函数的优点:

可以省去函数的定义,不需要像其他函数一样西先声明再使用,而可以在写函数的同时直接使用函数。

使用场景:

1.需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或返回值)
举例:

def test(a,b,opt): #opt当做参数传递
    print(a)
    print(b)
    print(opt(1,8))
test(10,100,lambda x,y:x+y)#匿名函数作为参数
10
100
9

2.要解决的问题符合lambda函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数
举例:

def add(m,n):#普通函数实现两数相加
    return m + n
print(add(1,9))
result = lambda m,n:m+n#匿名函数实现两数相加
print(result(1,9))
10
10

3.与一些Python的内置函数配合使用,提高代码的可读性
举例:

stus = [
    {"name":"zhangsan","age":28},
    {"name":"wangwu","age":20},
    {"name":"laowang","age":35}]
print("排列之前的顺序:")
print(stus)
print('根据名称:')
stus.sort(key=lambda m:m['name'])
print(stus)
print("根据年龄:")
stus.sort(key=lambda g:g['age'])
print(stus)
排列之前的顺序:
[{'name': 'zhangsan', 'age': 28}, {'name': 'wangwu', 'age': 20}, {'name': 'laowang', 'age': 35}]
根据名称:
[{'name': 'laowang', 'age': 35}, {'name': 'wangwu', 'age': 20}, {'name': 'zhangsan', 'age': 28}]
根据年龄:
[{'name': 'wangwu', 'age': 20}, {'name': 'zhangsan', 'age': 28}, {'name': 'laowang', 'age': 35}]

偏函数的定义:

在python中,如果在设置某个函数的时候,需要把函数的某个参数设置为固定的值,就可以使用偏函数来实现。

使用偏函数的好处:

将函数里面部分参数固定起来(默认值),后面再进行调用,简化函数的调用

偏函数实现:

1:import functools
2:from functools import partial(只导入了偏函数的库),partial(函数名称,参数=固定值)

例一:求两个数之和

from functools import partial
def add(a,b):
    return a + b
z=add(9,100)#普通函数调用
print(z)
a = partial(add,b=100) #偏函数调用,将b设置为固定的值,通过a参数绑定partial(add,100)返回一个新的函数,再调用执行
res = a(9)
print(res)
109
109

例二:求数字1010的二进制值是多少

from functools import partial
print(int('1010',base = 2))#直接转化,int(字符串或者整形,进制数) 不写默认十进制
def int2(str,base):#通过定义函数实现
    return int(str,base)
print(int2('1111',base=2))#调用函数
res = partial(int2,base=2)#通过使用偏函数,将进制设为预先可知变量
print(res('1111'))
10
15
15

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81498.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!