报错需传入Union类型参数,PEP无相关定义,是否遗漏内容?
问题解答
Union类型的PEP文档位置:你没找到是因为Union属于Python类型提示范畴,定义在PEP 484(Type Hints)中,并非单独的PEP。它用于声明变量可接受多种类型之一,比如报错里的
Union[float, numpy.floating, numpy.integer],意思是val参数必须是Python原生float、numpy浮点类型、numpy整数类型中的任意一种。当前报错的解决方向:
- 检查传入的
val类型,确保是上述三类之一。比如你传了Python原生int的话,虽然是整数,但不属于numpy.integer类型,这时候需要把原生int转为numpy.int64这类numpy整数类型,或者直接使用numpy数值类型传入。 - 如果用的是原生Python数值,先确认函数是否支持原生类型;若不支持,用
numpy.asarray()把原生数值转成对应numpy类型再传入。
- 检查传入的
补充简化写法:Python 3.10及以上版本中,Union可以用
|符号简化,比如float | numpy.floating | numpy.integer,和原写法功能完全一致。
内容的提问来源于stack exchange,提问作者Pally Zaki
相关产品推荐
相关产品推荐

