【发布时间】:2023-02-03 11:51:32
【问题描述】:
问题
正如标题所示,我正在尝试使用 functools.partial 为可调用对象创建默认设置。然而,一些参数相互依赖。
背景
想象一下,我有一个函数 _print_slice(items: list[int], start: int, end: int),它接收 list 并打印从 start 到 end 的项目。
_print_slice定义
def _print_slice(items: list[int], start: int, end: int) -> None:
print(items[start:end])
我想制作一个名为 print_list 的函数的部分版本,它打印整个列表,即 start = 0 和 end = len(items)
print_list定义
def print_list(items: list[int]) -> None:
_print_slice(items=items, start=0, end=len(items))
注意 print_list 只是 _print_slice 的包装。如果我没记错的话,这将是functools.partial 的完美用例,但是,考虑到end = len(items),我不确定使用 use partial 来完成此操作,请帮忙。
免责声明
这是该问题的一个非常简化的版本,以突出显示我要完成的任务。
【问题讨论】:
-
要回答您提出的字面问题:使用
None作为您为end参数传递的值,而不是len(items)。我不知道这是否回答了真正的问题,你实际上并没有问,但也许它给了你一个想法。肯定没有办法对partial()使用非常量值。