如何检查省略号的类型

问题描述 投票:0回答:1

我有一个非常具体的情况,当我需要在 python 中通过

isinstance
检查类型时。在极少数情况下,我想检查该值是否为
Ellipsis
。例如让我们获取字典:

customer_ids_map = {
    "1": "aaa",
    "2": ...,
}

但这行不通:

isinstance(..., Ellipsis)

TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union

这行不通:

isinstance(..., ...)

TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union

那么有什么优雅的方法可以做到这一点吗?

附注我使用的是python3.11

python python-3.x
1个回答
0
投票

在 Python 中,

Ellipsis
是由文字
...
表示的单例对象。虽然您无法使用
isinstance()
来检查
Ellipsis
,但您可以直接与其进行比较。以下是检查某个值是否为
Ellipsis
的方法:

customer_ids_map = {
    "1": "aaa",
    "2": ...,
}

# Check if the value is Ellipsis
for key, value in customer_ids_map.items():
    if value is ...:  # Using 'is' to check for the singleton Ellipsis
        print(f"The value for key '{key}' is Ellipsis")

说明:

  • 表达式
    value is ...
    检查
    value
    是否与
    Ellipsis
    是同一对象。由于
    Ellipsis
    是单例,因此这是检查它的正确方法。

替代方案:

如果你想将其封装在一个函数中以提高可读性,你可以这样做:

def is_ellipsis(value):
    return value is ...

# Usage
for key, value in customer_ids_map.items():
    if is_ellipsis(value):
        print(f"The value for key '{key}' is Ellipsis")

这样,您的意图就很明确,并且您可以在任何需要检查

is_ellipsis()
的地方使用
Ellipsis

© www.soinside.com 2019 - 2024. All rights reserved.