Python:类型化方法参数

Python:类型化方法参数,python,callback,parameter-passing,user-defined-functions,Python,Callback,Parameter Passing,User Defined Functions,在Python3中,可以将类型添加到函数的参数中: def foo(bar: str = "default") -> str: """ @param bar: a textual value """ return "test" 现在我有两个问题。首先,对于回调函数,如何做到这一点?也就是说,如何在函数头中定义回调的签名 def foo(callback) -> str: """ @param callback: function(va

在Python3中,可以将类型添加到函数的参数中:

def foo(bar: str = "default") -> str:
    """
    @param bar: a textual value
    """
    return "test"
现在我有两个问题。首先,对于回调函数,如何做到这一点?也就是说,如何在函数头中定义回调的签名

def foo(callback) -> str:
    """
    @param callback: function(value: str) -> str
    """
    # calculate some intermediate stuff
    my_var = ...    
    return callback(my_var)
第二,如何对元组执行。这将包括定义值的类型为tuple,并且应该有两个值(没有三元组等)


感谢您的评论和回答。

要指定回调函数的签名,您可以使用以下命令:

from typing import Callable


def foo(callback: Callable[[str], str]) -> str:
    # calculate some intermediate stuff
    my_var = '...'
    return callback(my_var)
对于两个字符串的组合,可以使用:

from typing import Tuple


def foo(value: Tuple[str, str]) -> str:
    v1, v2 = value
    return v1 + v2

请参阅回调是可调用的,但回调必须满足需要在其中调用is的签名。参见上面的示例。在您的示例中,回调注释将是
typing.Callable[[str],str]
还有一个问题:如果您在类中定义了一个静态方法,而该方法具有相同类型/类的参数,那么该类型是未知的。。。
from typing import Tuple


def foo(value: Tuple[str, str]) -> str:
    v1, v2 = value
    return v1 + v2