最近在做项目,想要注释Python中某个函数的参数为另一个函数
刚开始选择了这种形式:
def f1(x):
print(x)
def f2(f1: function, x: str):
f1(x)
if __name__ == '__main__':
f2(f1, '123456')
但是报错
NameError: name 'function' is not defined
看了一下function字段的源码,有这样一段注释
# TODO not defined in builtins!
似乎fuction并未在源码中被定义,所以才会报NameError
最后经过多方查找,注释参数为函数可采用callable字段。该函数原本用于检查一个对象是否是可调用的,若可调用,则返回True,其可被用作检测对象是否为函数。
修改后的代码如下:
def f1(x):
print(x)
def f2(f1: callable, x: str):
f1(x)
if __name__ == '__main__':
f2(f1, '123456')
修改后可正常运行
如有错误,欢迎指正