我有一个非常具体的情况,当我需要在 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 中,
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
。