gpt4 book ai didi

python - 函数注释

转载 作者:行者123 更新时间:2023-11-30 22:57:19 24 4
gpt4 key购买 nike

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

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

而且我不想通过 Function = type(lambda: None) 在注释中使用它。

最佳答案

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

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]。你选择哪一个是一种风格选择,我在这里使用了明确的选项作为我个人的喜好。

关于python - 函数注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com