gpt4 book ai didi

python - itertools.islice 在与 functools.partial 一起使用时引发 ValueError

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:06 25 4
gpt4 key购买 nike

考虑以下 python session (3.6.1):

>>> from itertools import islice
>>> l = [i for i in range(10)]
>>> islice(l, 0, 1)
<itertools.islice object at 0x7f87c9293638>
>>> (lambda it: islice(it, 0, 1))(l)
<itertools.islice object at 0x7fe35ab40408>

这里没有什么出乎意料的。现在,使用 functools.partial:

>>> from functools import partial
>>> partial(islice, 0, 1)(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.

partial 似乎以一种意想不到的方式干扰了 islice 行为。

这种行为背后的基本原理是什么?这是因为 islice 不处理关键字参数,like str.split few versions ago

最佳答案

位置参数在其他位置参数之后传递。所以 partial(islice, 0, 1)(l)islice(0, 1, l) 是一样的,这是行不通的。

您不能使用部分以不同的顺序传递参数;只有关键字参数才允许这样做。由于 islice 没有关键字参数,因此您不能在此处使用 partial()

您唯一的选择是使用 lambda

关于python - itertools.islice 在与 functools.partial 一起使用时引发 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45776872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com