【发布时间】:2021-01-11 03:17:35
【问题描述】:
如何键入提示可选的输出参数:
def myfunc(
x: float,
return_y: bool = False
) -> float, Optional[float] : # !!! WRONG !!!
# ... code here
#
# y and z are floats
if return_y:
return z, y
return z
--- 编辑
-> Tuple[float, Union[None, float]] :
但这太难看了,似乎压倒了通常它只会返回一个简单的浮点数的事实。 这是正确的方法吗?
正确方法见下方答案。
注意:这种设计不是一个好的做法,应该避免使用一致的返回类型。尽管如此,如果必须这样做,可选输出参数表示可能不会根据输入参数的标志返回的参数。
【问题讨论】:
-
你的函数要么返回一个浮点数,要么返回一个由两个浮点数组成的元组。所以:
-> Union[float, Tuple[float, float]]。您给出的建议是错误的,因为在单参数情况下,您根本不返回Tuple。 -
不要让函数的返回类型依赖于运行时参数。要么总是返回一个元组,让用户决定是否要忽略第二个元素,要么定义两个函数。
-
@chepner 有什么具体原因吗?
标签: python type-hinting