类型提示 lambda 函数作为函数参数
Typehinting lambda function as function argument
我有一个接受 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 是一个函数。没有函数类型,但 typing
包中有一个 Callable
类型。这个问题的解决方案是
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)
我有一个接受 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 是一个函数。没有函数类型,但 typing
包中有一个 Callable
类型。这个问题的解决方案是
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)