Python:类型化方法参数

时间:2017-12-01 12:24:53

标签: 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(value: str) -> str
    """
    # calculate some intermediate stuff
    my_var = ...    
    return callback(my_var)

其次,如何为元组。这将包括定义值是元组类型,并且应该有两个值(没有三元组等)。

def foo(value) -> str:
    """
    @param value: tuple of strings
    """

    v1, v2 = value
    return v1 + v2

感谢您的意见和答案。

1 个答案:

答案 0 :(得分:2)

要指定回调函数的签名,可以使用Callable,如下所示:

from typing import Callable


def foo(callback: Callable[[str], str]) -> str:
    # calculate some intermediate stuff
    my_var = '...'
    return callback(my_var)

对于两个字符串的tuple,您可以使用:

from typing import Tuple


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