您可以在 python 3 中使用 函数注释 来指示参数和返回值的类型,如下所示:
def myfunction(name: str, age: int) -> str:
return name + str(age) #usefulfunction
但是,如果您正在编写一个需要函数作为参数或返回一个函数的函数,该怎么办?
我意识到您可以为注释编写任何有效的表达式,因此我可以将“函数”编写为字符串,但这是最好/唯一的方法吗?有没有像内置类型
int/float/str/list/dict
等那样的东西?我知道
callable
,但我想知道是否还有其他事情。
是的,Python 有一个内置的类型提示来表示函数类型,叫做
Callable
。它在
typing
模块中定义。
以下是如何使用
Callable
来指示一个函数接受另一个函数作为参数:
from typing import Callable
def apply_function(func: Callable[[int], int], value: int) -> int:
"""将给定的函数应用于给定的值。
Args:
func: 一个接受一个整数并返回一个整数的函数。
value: 要应用函数的整数。
Returns:
函数应用于值的结果。
"""
return func(value)
def square(x: int) -> int:
return x * x
result = apply_function(square, 5)
print(result) # 输出:25
在这个例子中,
Callable[[int], int]
表示
func
参数应该是一个接受一个整数并返回一个整数的函数。
以下是如何使用
Callable
来指示一个函数返回另一个函数:
from typing import Callable
def get_multiplier(factor: int) -> Callable[[int], int]:
"""返回一个将给定数字乘以因子的函数。
Args:
factor: 要乘以的因子。
Returns:
一个接受一个整数并返回乘积的函数。
"""
def multiplier(x: int) -> int:
return x * factor
return multiplier
double = get_multiplier(2)
print(double(5)) # 输出:10
在这个例子中,
Callable[[int], int]
表示
get_multiplier
函数返回一个接受一个整数并返回一个整数的函数。
使用
Callable
使你的代码更容易理解,并允许类型检查器识别函数类型错误。