我有一个接受 lambda 的函数:
def my_function(some_lambda):
# do stuff
some_other_variable = some_lambda(some_variable)
my_function(lambda x: x + 2)
我想输入提示传递的 lambda 函数。
我已经尝试过了
def my_function(some_lambda: lambda) -> None:
# SyntaxError: invalid syntax
from typing import Lambda
# ImportError: cannot import name 'Lambda'
我的 IDE 在 2.7 跨式类型提示上抱怨类似的事情,例如
def my_function(some_lambda: lambda) -> None:
# type: (lambda) -> None
# formal parameter name expected
仔细想想,这是显而易见的,但需要一段时间才能在头脑中记住。 lambda 是一个函数。没有函数类型,但
Callable
包中有一个 typing
类型。这个问题的解决办法是
from typing import Callable
def my_function(some_lambda: Callable) -> None:
Python 2 版本:
from typing import Callable
def my_function(some_lambda):
# type: (Callable) -> None
Callable 是您问题的答案。
from typing import Callable
some_lambda: Callable[[int], int] = lambda x: x + 2
def my_function(func: Callable[[int], int]) -> None:
# do some stuff
my_function(some_lambda)