审查生成的带审计求和函数

来自 functools 函数工具
Python 3.14 高级 8分钟 找出 5处问题

根据任务要求审查这个使用 functools 的生成实现。

对任意由整数式收费项组成的可迭代对象返回整数总额,包括空输入;保留函数元数据;记录调用但不记录令牌;并避免不必要的重复复制。

Python
from functools import partial, reduce

def audit(log, func):
    def wrapper(*args, **kwargs):
        log(f"calling {func.__name__}: {kwargs!r}")
        func(*args, **kwargs)
    return wrapper

def normalize_charges(charges):
    return reduce(
        lambda acc, charge: acc + [int(charge)],
        charges,
        [],
    )

def total_cents(charges, *, token):
    return reduce(lambda left, right: left + right,
                  normalize_charges(charges))

def emit(message, *, sink):
    sink.append(message)

events = []
audit_log = partial(emit, sink=events)
charge_total = partial(audit, audit_log)(total_cents)

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误