Skip to main content
 首页 » 编程设计

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

2025年05月04日15mayingbao

是否有可能指定一个 lambda 作为函数参数可以接受多少个参数?

例如:

def func(k=lambda x:return x**2): 
   return k 

如果 k 不是标准的 lambda,我可以指定 k 应该只接受一个参数吗?

最大

请您参考如下方法:

你可以使用 inspect.getargspec 做这样的事情:

import inspect 
def func (k = lambda x: x ** 2): 
    if not callable(k) or len(inspect.getargspec(k).args) != 1: 
        raise TypeError('k must take exactly one argument.') 
    # Do whatever you want 

请注意,上面的代码会悲惨地失败(虽然它不应该):

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