有没有更简洁Pythonic的方式编写这类运算节点生成代码模式?
Python运算节点生成逻辑简化方案
核心方案:封装高阶工具函数
把重复的判断逻辑抽成独立工具函数,不同运算只需传入对应的节点构造函数即可,完全消除重复代码:
def apply_op(operands, create_node): if not operands: return None if len(operands) == 1: return operands[0] return create_node(*operands)
使用示例
所有运算的逻辑都可以简化为一行调用:
# 加法 return apply_op(l, createAddNode) # 减法 return apply_op(l, createSubNode) # 乘法 return apply_op(l, createMulNode) # 除法 return apply_op(l, createDivNode)
可选简化写法(单场景无需复用的情况)
如果只是单个场景不需要抽公共函数,可以直接用嵌套三元表达式,逻辑和原代码完全等价:
return None if not l else l[0] if len(l) == 1 else createAddNode(*l)
额外适配优化
如果需要兼容生成器、元组等其他可迭代类型的操作数输入,可以在工具函数开头先转换为列表:
def apply_op(operands, create_node): operands = list(operands) if not operands: return None if len(operands) == 1: return operands[0] return create_node(*operands)
内容的提问来源于stack exchange,提问作者JRR
相关产品推荐
相关产品推荐

