Raf*_*Raf 7 python type-hinting
如何输入可选输出参数提示:
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
Run Code Online (Sandbox Code Playgroud)
- - 编辑
-> Tuple[float, Union[None, float]] :
Run Code Online (Sandbox Code Playgroud)
但这太丑陋了,似乎掩盖了一个事实,即通常它只会返回一个简单的浮点数。这是正确的方法吗?
正确的方法请参阅下面的答案。
---编辑2
此问题被标记为该问题的重复项。然而,那个问题是关于Union返回类型的,而这个问题是关于Optional返回类型的。
注意:这种设计不是一个好的实践,应该避免,以支持一致的返回类型。尽管如此,如果必须这样做,可选输出参数意味着根据输入参数的标志可能不会返回的参数。
从Python 3.10和PEP 604开始,您现在可以|使用Union.
返回类型将是float | Tuple[float, float]
正确的类型提示是:
from typing import Tuple, Union
def myfunc(x: float, return_y: bool = False) -> Union[float, Tuple[float, float]]:
z = 1.5
if return_y:
y = 2.0
return z, y
return z
Run Code Online (Sandbox Code Playgroud)
然而,获得此类回报通常不是一个好的做法。要么返回类似的东西Tuple[float, Optional[float]],要么写多个函数,以后处理起来会容易很多。
有关返回语句一致性的更多信息:
返回语句保持一致。函数中的所有 return 语句要么都应该返回表达式,要么都不应该返回。如果任何 return 语句返回一个表达式,则任何不返回值的 return 语句都应显式地将其声明为 return None,并且显式 return 语句应出现在函数末尾(如果可到达)。
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |