【问题标题】:Python: typed method argumentsPython:类型化方法参数
【发布时间】:2017-12-01 12:24:53
【问题描述】:

在 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

感谢您的 cmets 和回答。

【问题讨论】:

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

标签: python callback parameter-passing user-defined-functions


【解决方案1】:

要指定回调函数的签名,可以使用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

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多