首页 > 解决方案 > 如何键入函数返回另一个函数的提示?

问题描述

我有以下两个功能:

def payment_failed(user: User, charge: Charge, type: str) -> HttpResponse:
    # ... do something here
    return HttpResponse(status=200)


def payment_canceled(*args):
    return payment_failed(*args)

我也想对payment_canceled函数使用类型提示,但我不确定哪个版本是正确的。

版本 1:

def payment_canceled(*args) -> payment_failed:
    return payment_failed(*args)

版本 2:

def payment_canceled(*args) -> HttpResponse:
    return payment_failed(*args)

标签: pythonpython-3.x

解决方案


payment_canceled 返回另一个函数;它调用payment_failed并返回它返回的任何内容。第二个是正确的:

def payment_canceled(*args) -> HttpResponse:
    return payment_failed(*args)

如果您真的要返回一个函数,那么从模块返回是合适的。Callabletyping

from typing import Callable

def payment_canceled(*args) -> Callable[Tuple[Any],HttpResponse]:
    return payment_failed

推荐阅读