我的函数从字典中接收值。下面的MWE应该给人留下印象:
def f(x):
print([y for y in x])
f({'a': 0, 'b': 1}.values()) #prints [0, 1]
x
的类型不是dict
也不是list
而是dict_values
。然而 def f(x: dict_values):
给出 NameError: name 'dict_values' is not defined
。
那么,如何在类型提示中指定 dict_values 呢?
您可以使用 ValuesView 进行类型提示:
from typing import ValuesView
print(isinstance(dict(a=3).values(), ValuesView))
def f(x: ValuesView):
print([y for y in x])
from collections.abc import Iterable
def f(x: Iterable[int]):
print([y for y in x])
f({'a': 0, 'b': 1}.values()) #prints [0, 1]