假设我有一个像这样的函数签名:
def any_foo(
bar: Bar,
with_baz: Optional[Baz] = None,
with_datetime: Optional[datetime] = None,
effective: Optional[bool] = False,
) -> Foo
我当然可以复制它的声明并修改它足以创建以下内容TypedDict
:
AnyFooParameters = TypedDict(
"AnyFooParameters",
{
bar: Bar,
with_baz: Optional[Baz],
with_datetime: Optional[datetime],
effective: Optional[bool]
}
)
但这似乎是一个如此简单的转换,我想知道是否有一些简单的方法来创建这个TypedDict
(或者至少name: type
对)直接来自函数。
的结果any_foo.__annotations__
正是您想要的。例如:
from typing import Optional
def any_foo(
req_int: int,
opt_float: Optional[float] = None,
opt_str: Optional[str] = None,
opt_bool: Optional[bool] = False,
) -> int:
pass
与any_foo.__annotations__
,你可以得到这个:
{'req_int': int,
'opt_float': typing.Optional[float],
'opt_str': typing.Optional[str],
'opt_bool': typing.Optional[bool],
'return': int}
请注意,您可以通过以下方式访问返回值的类型return
key.
顺便说一句,自从return
是保留关键字,您不能将参数命名为return
所以不必担心重复的密钥:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)