Yah*_*din 141 python return-type type-hinting python-3.x python-3.5
我在python中有一个函数可以返回a bool或a list.有没有办法使用类型提示指定返回类型.
例如,这是正确的方法吗?
def foo(id) -> list or bool:
...
Run Code Online (Sandbox Code Playgroud)
Bha*_*Rao 213
从文档中
类
typing.Union联盟类型; Union [X,Y]表示X或Y.
因此,表示多个返回数据类型的正确方法是
from typing import Union
def foo(client_id: str) -> Union[list,bool]
Run Code Online (Sandbox Code Playgroud)
但请注意,不强制输入.Python仍然是动态类型的语言.开发注释语法是为了在代码开发之前帮助发布到生产环境中.正如PEP 484所述,"在运行时没有进行类型检查."
>>> def foo(a:str) -> list:
... return("Works")
...
>>> foo(1)
'Works'
Run Code Online (Sandbox Code Playgroud)
如您所见,我传递一个int值并返回一个str.但是,__annotations__将设置为相应的值.
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
Run Code Online (Sandbox Code Playgroud)
有关类型提示的更多信息,请参阅PEP 483.另请参阅Python 3.5中的什么类型提示?
请注意,这仅适用于Python 3.5及更高版本.这在PEP 484中清楚地提到.
Ant*_*dak 70
如果有人在这里搜索“如何指定多个返回值的类型?”,请使用 Tuple[type_value1, ..., type_valueN]
from typing import Tuple
def f() -> Tuple[dict, str]:
a = {1: 2}
b = "hello"
return a, b
Run Code Online (Sandbox Code Playgroud)
更多信息:如何注释多个返回值的类型?
xjc*_*jcl 33
Python 3.10(使用|):一个函数的示例,它接受一个intor的单个参数str并返回一个intor str:
def func(arg: int | str) -> int | str:
^^^^^^^^^ ^^^^^^^^^
type of arg return type
Run Code Online (Sandbox Code Playgroud)
Python 3.5 - 3.9(使用typing.Union):
from typing import Union
def func(arg: Union[int, str]) -> Union[int, str]:
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
type of arg return type
Run Code Online (Sandbox Code Playgroud)
对于特殊情况,X | None您可以使用Optional[X].
Fel*_*elk 18
def foo(client_id: str) -> list or bool:评估时的陈述等同于
def foo(client_id: str) -> list:,因此不会做您想要的.
描述"A或B"类型提示的本地方式是Union(感谢Bhargav Rao):
def foo(client_id: str) -> Union[list, bool]:
Run Code Online (Sandbox Code Playgroud)
我不想成为"你为什么要这样做"的家伙,但也许有2种回归类型并不是你想要的:
如果要返回bool以指示某种特殊错误情况,请考虑使用异常.如果你想将bool作为一些特殊值返回,那么一个空列表可能是一个很好的表示.您还可以指示None可以返回Optional[list]
| 归档时间: |
|
| 查看次数: |
39470 次 |
| 最近记录: |