Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从任意长的参数列表构建python函数_Python - Fatal编程技术网

从任意长的参数列表构建python函数

从任意长的参数列表构建python函数,python,Python,我试图从单个参数或列表构造python lambda函数,但不确定使用什么语法来构建lambda: def check_classes_filter(*class): return lambda x: isinstance(x, class) and isinstance(x, class[1]...) lambda应该检查x是否是传递给函数的任意数量的类的实例(一个或多个) 在python中,是否有一种从任意数量的参数构建函数的通用方法,也许是一种理解 您可以使用all在类参数上循环

我试图从单个参数或列表构造python lambda函数,但不确定使用什么语法来构建lambda:

def check_classes_filter(*class):
    return lambda x: isinstance(x, class) and isinstance(x, class[1]...)
lambda应该检查x是否是传递给函数的任意数量的类的实例(一个或多个)


在python中,是否有一种从任意数量的参数构建函数的通用方法,也许是一种理解

您可以使用
all
参数上循环

def check_classes_filter(*classes):
    return lambda x: all(isinstance(x, c) for c in classes)

>>> fun = check_classes_filter(str)
>>> fun('hello')
True
>>> fun = check_classes_filter(int, str)
>>> fun('hello')
False
尽管我更喜欢只传递类的
列表

def check_classes_filter(classes):
    return lambda x: all(isinstance(x, c) for c in classes)
并将函数调用为

check_classes_filter([int, str])

您可以使用
all
参数上循环

def check_classes_filter(*classes):
    return lambda x: all(isinstance(x, c) for c in classes)

>>> fun = check_classes_filter(str)
>>> fun('hello')
True
>>> fun = check_classes_filter(int, str)
>>> fun('hello')
False
尽管我更喜欢只传递类的
列表

def check_classes_filter(classes):
    return lambda x: all(isinstance(x, c) for c in classes)
并将函数调用为

check_classes_filter([int, str])

如果要检查对象是否是任何列出的类的实例,则无需定义任何内容:

>>> isinstance('test', int)
False
>>> isinstance('test', str)
True
>>> isinstance('test', (int, str))
True
发件人:

如果classinfo是对象类型的元组(或递归地,其他类似的 元组),如果对象是任何类型的实例,则返回true


在您的问题中,您提到了
,如果x是传递给函数(一个或多个)
的任意数量的类的实例,这意味着您应该
而不是布尔逻辑中的
。如果要检查对象是否为每个列出的类的实例,请参阅。

如果要检查对象是否为任何列出的类的实例,则无需定义任何内容:

>>> isinstance('test', int)
False
>>> isinstance('test', str)
True
>>> isinstance('test', (int, str))
True
发件人:

如果classinfo是对象类型的元组(或递归地,其他类似的 元组),如果对象是任何类型的实例,则返回true


在您的问题中,您提到了
,如果x是传递给函数(一个或多个)
的任意数量的类的实例,这意味着您应该
而不是布尔逻辑中的
。如果要检查对象是否是每个列出类的实例,请参见。

为什么要为此创建lambda函数,而不是可以处理任意长的对象列表的实际函数?实际上,它是更大函数的一部分,需要将lambda函数作为参数传递给另一个函数,我不想更改接受lambda的函数的源代码。为什么要为它创建一个lambda函数,而不是一个可以处理任意长的对象列表的实际函数?它实际上是一个更大函数的一部分,需要将lambda函数作为参数传递给另一个函数,我不想更改接受lambda的函数的源代码。我想使用
而不是
,否则我只会使用内置功能。不过感谢您的回复,我应该说得更清楚。我想使用
而不是
,否则我只会使用内置功能。谢谢你的回复,我应该说得更清楚。