Python:带类型的方法参数

4
在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

感谢您的评论和回答。

3
请查看 https://docs.python.org/3/library/typing.html。 - PM 2Ring
回调函数是一个可调用的函数。 - Laurent LAPORTE
但是回调函数必须满足一个签名,其中需要被调用。请参见上面的示例。 - Matthias
1
在你的示例中,回调注释将是 typing.Callable[[str], str] - Michael Butscher
另一个问题是:如果您在类内定义了一个静态方法,而该方法具有相同类型/类的参数,则该类型是未知的... - Matthias
1个回答

2
指定回调函数的签名,可以使用 Callable,如下所示:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接