Python3之偏函数
通过设定参数的默认值,可以降低函数调用的难度。偏函数可以做到这一点
int()函数可以把字符串转换成十进制整数,当传入字符串时,int()默认把字符串为十进制
1 2 | >>> int ( '123' ) 123 |
但int()函数还提供额外的base参数,默认值为10。如果传入base参数,可以做N进制转换
1 2 3 4 5 6 | >>> int ( '123' ,base = 8 ) 83 >>> int ( '123' ,base = 16 ) 291 >>> int ( '123' , 16 ) 291 |
PS:base=8把字符串作为8进制转换成10进制,同理16进制 可以省略关键字base直接写8或者16
假设需要转换大量的二进制字符,每次传入int(x,base=2)非常麻烦,可以定义一个int2函数默认把base=2传进去
1 2 3 4 5 | >>> def int2(x,base = 2 ): ... return int (x,base = 2 ) ... >>> int2( '11' ) 3 |
functools.partial就是帮助我们创建一个偏函数,不需要我们自己定义int2(),可以直接使用下面代码创建新的函数int2()
1 2 3 4 | >>> import functools >>> int2 = functools.partial( int ,base = 2 ) >>> int2( '11' ) 3 |
偏函数functools.partial的作用就是,把一个函数的默写参数固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
上面新的int2函数,仅仅是把base的参数重新设定默认值为2,但也可以在函数调用时传入其他值
1 2 | >>> int2( '11' ,base = 10 ) 11 |
创建偏函数时,实际上可以接收函数对象,*args和**kw 3个参数当传入
1 | int2 = functools.partial( int , base = 2 ) |
相当于传入是字典
1 | kw = { 'base' : 2 } |
当传入
1 | max2 = functools.partial( max , 10 ) |
实际上会把10作为*args的一部分自动加到左边
1 | max2( 5 , 6 , 7 ) |
相当于
1 | max2( 10 , 5 , 6 , 7 ) |
结果为10
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!