Python中如何向作为参数传入的运算函数追加参数实现算术运算
解决方案
要实现one(plus(two()))这类链式算术调用,核心是让运算函数在只拿到第二个数字时返回可接收第一个数字的待执行函数,数字函数收到运算函数参数时,把自身数值传入完成计算。
修改后的完整可运行代码
# 数字函数实现 def one(*args): val = 1 if not args: return val # args[0]是运算函数返回的待执行方法,传入自身数值完成计算 return args[0](val) def two(*args): val = 2 if not args: return val return args[0](val) # 运算函数实现 def plus(second_num): # 返回待接收第一个数字的包装函数 def wrapper(first_num): return first_num + second_num return wrapper # 测试调用 print(one(plus(two()))) # 输出3
逻辑说明
- 无参调用数字函数(如
two()):直接返回对应的数值2 - 调用运算函数时传入第二个数字(如
plus(two())):不会立刻计算,返回等待接收第一个运算数的包装函数 - 带参调用数字函数(如
one(plus(two()))):把自身的数值1传入plus(two())返回的包装函数,执行加法计算得到结果3
拓展示例
可以按照相同格式快速新增其他数字和运算:
# 新增数字3 def three(*args): val = 3 if not args: return val return args[0](val) # 新增乘法运算 def times(second_num): def wrapper(first_num): return first_num * second_num return wrapper print(two(times(three()))) # 输出6
内容的提问来源于stack exchange,提问作者Kadiem Alqazzaz
相关产品推荐
相关产品推荐

