输入 lambda 函数作为函数参数

问题描述 投票:0回答:2

我有一个接受 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
python python-2.7 python-3.x type-hinting
2个回答
10
投票

仔细想想,这是显而易见的,但需要一段时间才能在头脑中记住。 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

0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.