gpt4 book ai didi

python - 支持 `in` 运算符的最佳基类型?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:18 26 4
gpt4 key购买 nike

我有一个函数:

def f(a):
return 100 in a

我想注释参数a,例如

from typing import List
def f(a: List[int]):
return 100 in a

但是支持 in 运算符的类型不仅是 list ,还有 settuple (或者可能是 dictkeyview 或其他东西)。

我的问题是:

什么类型的a最好,它支持in运算符?
比如,提供此特定功能的最简单类型是什么?

typing.Containertyping.Collection 似乎还可以,但我不知道哪种类型最好

最佳答案

我会选择 Union[Container, Iterable]。 python documentation for membership testing声明它首先尝试 __contains__ 然后它尝试 __iter__ 来确定成员资格。它还声明它尝试 __getitem__ 两者都失败但仅针对旧样式迭代。老实说,我不确定那是什么意思,但我认为我们可以安全地忽略它。

您的论点应尽可能通用。例如,如果您选择 Collection 将禁止生成器,因为它们不实现 len,但生成器支持 in 关键字。

https://docs.python.org/3/library/collections.abc.html#collections.abc.Container

关于python - 支持 `in` 运算符的最佳基类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899062/

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