Python typehint

时间:2018-08-13 19:00:13

标签: python-3.x type-hinting pep

我有一个包装函数,如果要返回的变量未知,我应该把它作为返回值吗?

def try_catch_in_loop(func_to_call: callable, *args):
    for attempt in range(NUM_RETRYS + 1):
        try:
            if attempt < NUM_RETRYS:
                return func_to_call(*args)
            else:
                raise RunTimeError("Err msg")
        except gspread.exceptions.APIError:
            request_limit_error()

专门查看在函数调用末尾要放的内容,即:

def try_catch_in_loop(...) -> {What do I put here}:

2 个答案:

答案 0 :(得分:0)

看起来您可以使用Any类型。 https://docs.python.org/3/library/typing.html#typing.Any

答案 1 :(得分:0)

通过将func_to_call定义为返回某些Callable类型的Generic,可以说try_catch_in_loop也将返回该类型。您可以使用TypeVar来表达这一点:

from typing import Callable, TypeVar

return_type = TypeVar("return_type")

def try_catch_in_loop(func_to_call: Callable[..., return_type], *args) -> return_type:
    ...