代码之家  ›  专栏  ›  技术社区  ›  Matthias

Python:类型化方法参数

  •  4
  • Matthias  · 技术社区  · 7 年前

    在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类型,并且应该有两个值(没有三元组等)。

    def foo(value) -> str:
        """
        @param value: tuple of strings
        """
    
        v1, v2 = value
        return v1 + v2
    

    谢谢你的评论和回答。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Laurent LAPORTE    7 年前

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