Python 类型化-函数返回值类型与表达式类型相同

Python 类型化-函数返回值类型与表达式类型相同,python,python-3.x,python-typing,Python,Python 3.x,Python Typing,以代码为例: def foo() -> ??: return bar() 我怎么能说我希望foo的返回类型与bar的返回类型相同 在C++中,我可以使用DECKEYPE,沿着以下的部分: auto foo() -> decltype(bar()) { return bar(); } 我找不到Python的等价物。有吗?Python的内置类型库支持创建,您可以描述一个新的类型类,并将这两个函数作为返回值与该类耦合。如果定义了bar,您可以访问其签名 In [1]

以代码为例:

def foo() -> ??:
     return bar()
我怎么能说我希望foo的返回类型与bar的返回类型相同

在C++中,我可以使用DECKEYPE,沿着以下的部分:

auto foo() -> decltype(bar()) {
    return bar();
}

我找不到Python的等价物。有吗?

Python的内置类型库支持创建,您可以描述一个新的类型类,并将这两个函数作为返回值与该类耦合。

如果定义了bar,您可以访问其签名

In [1] from inspect import signature

In [2]: def bar(a: int) -> float: 
   ...:     return float(a)                                         
   ...:                                                             

In [3]: def foo(a: int) -> signature(bar).return_annotation: 
   ...:     return bar(a)                                           
   ...:                                                             

In [4]: signature(foo)                                              
Out[4]: <Signature (a: int) -> float>        

话虽如此,我不确定你是否需要这样做,如果你这样做是为了静态类型检查,因为foo的返回类型可以从bar的至少PyCharm的静态分析器中推断出来。请看这篇文章:你需要显式类型吗?如果没有它,会推断出什么?@jornsharpe我做了测试,你是对的-看起来至少在我的编辑器中语法完成时推断出了正确的类型。