函数注释

2024-04-24 18:58:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的很喜欢函数注释,因为它们使我的代码更加清晰。 但我有一个问题:你如何注释一个以另一个函数为参数的函数?还是返回一个?你知道吗

def x(f: 'function') -> 'function':
    def wrapper(*args, **kwargs):
        print("{}({}) has been called".format(f.__name__, ", ".join([repr(i) for i in args] + ["{}={}".format(key, value) for key, value in kwargs])))
        return f(*args, **kwargs)
    return wrapper

我不想在注解中使用它。你知道吗


Tags: key函数代码informatfor参数return
1条回答
网友
1楼 · 发布于 2024-04-24 18:58:52

使用添加到Python 3.5中的新^{} type hinting support;函数是可调用的,您不需要函数类型,您需要可以调用的东西:

from typing import Callable, Any

def x(f: Callable[..., Any]) -> Callable[..., Any]:
    def wrapper(*args, **kwargs):
        print("{}({}) has been called".format(f.__name__, ", ".join([repr(i) for i in args] + ["{}={}".format(key, value) for key, value in kwargs])))
        return f(*args, **kwargs)
    return wrapper

上面指定您的x接受一个接受任何参数的可调用对象,其返回类型为Any,例如,任何情况下,它都是一个通用的可调用对象。x然后返回与泛型相同的内容。你知道吗

您也可以用x(f: Callable) -> Callable:来表示这一点;普通的Callable相当于Callable[..., Any]。你选哪一个是风格选择,我在这里使用了显式选项作为我的个人偏好。你知道吗

相关问题 更多 >