Python将lambda参数指定为函数参数

Python将lambda参数指定为函数参数,python,lambda,Python,Lambda,有没有可能指定lambda作为函数参数可以接受多少个参数 例如: def func(k=lambda x:return x**2): return k 我可以指定,如果k不是标准lambda,那么k应该只接受一个参数吗 Max您可以使用以下方法执行类似操作: 请注意,上述操作将以如下方式失败(但不应如此): …因此,如果您想处理此案件,您需要一些更复杂的东西: import inspect def func (k = lambda x: x ** 2): if not calla

有没有可能指定lambda作为函数参数可以接受多少个参数

例如:

def func(k=lambda x:return x**2):
   return k
我可以指定,如果k不是标准lambda,那么k应该只接受一个参数吗


Max

您可以使用以下方法执行类似操作:

请注意,上述操作将以如下方式失败(但不应如此):

…因此,如果您想处理此案件,您需要一些更复杂的东西:

import inspect
def func (k = lambda x: x ** 2):
    if not callable(k):
        raise TypeError('k must be callable.')
    argspec = inspect.getfullargspec(k)
    nargs = len(argspec.args)
    ndeft = 0 if argspec.defaults is None else len(argspec.defaults)
    if nargs != ndeft + 1:
        raise TypeError('k must be callable with one argument.')
    # Do whatever you want

你为什么要拿lamda作为论据?另外,您在问题中遇到的是无效的pythonAlso,因此使用不足的args调用lambda会出错,因此您可以直接捕获该错误
func (lambda x, y = 8: x + y)
import inspect
def func (k = lambda x: x ** 2):
    if not callable(k):
        raise TypeError('k must be callable.')
    argspec = inspect.getfullargspec(k)
    nargs = len(argspec.args)
    ndeft = 0 if argspec.defaults is None else len(argspec.defaults)
    if nargs != ndeft + 1:
        raise TypeError('k must be callable with one argument.')
    # Do whatever you want