#定义柯里化函数
def curry(func):
def curried(*args, **kwargs):
if len(args) + len(kwargs) >= func.__code__.co_argcount:
return func(*args, **kwargs)
else:
return lambda *args2, **kwargs2: curried(*(args + args2), **(kwargs | kwargs2))
return curried
# 示例:一个接受三个参数的函数
def add_three_numbers(a, b, c):
return a + b + c
# 柯里化这个函数
curried_add_three_numbers = curry(add_three_numbers)
# 你可以分步调用这个柯里化函数
add_two_numbers = curried_add_three_numbers(1)
add_one_more = add_two_numbers(2)
result = add_one_more(3)
print(result) # 输出:6
# 或者一次性传入所有参数
result2 = curried_add_three_numbers(1, 2, 3)
print(result2) # 输出:6
# 柯里化函数 借助第三方模块
# from toolz import curry # 这两个第三方模块都可以用,代码是一样的
from funcy import curry # 这两个第三方模块都可以用,代码是一样的
@curry #关键字声明下面的函数是柯里化函数
def addTreeNumsCurry(a,b,c):
return a+b+c
print(addTreeNumsCurry(1)(2)(3))
fixedTwo = addTreeNumsCurry(1)(2)
print(fixedTwo(10))
print(fixedTwo(20))
print(fixedTwo(30))
JavaScript学习笔记之总结与回顾(学习JavaScript基础知识看这一篇就够了,文章总字数2.8万)源码
62 浏览量
2024-03-30
19:33:22
上传
评论
收藏 39KB RAR 举报
m0_63165331
- 粉丝: 964
- 资源: 2
最新资源
- VR开发的概要介绍与分析
- 自动驾驶定位系列教程七:点云畸变补偿.pdf
- HM2302D-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2302B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- springboot学生考勤管理系统
- HM2302A-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2301-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 数据可视化的概要介绍与分析
- HM2301E-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2301D-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈