如何将值作为参数传递给python方法的多个运算符

时间:2019-07-09 17:24:33

标签: python python-3.x lambda

我有一个函数可以验证表达式指定的列的值。该方法将接受用户给定的表达式作为函数的参数,并在整个列中进行检查。用户可以定义任何表达式。我如何在函数中传递带有多个运算符的用户定义表达式。这是我的伪代码。

def myFunction(list1, condition) :
    for value in list1:
        if condition :
            print("out of range")
        else :
            print("within range")

list1 =[1, 2, 3, 0, 5, 10]
myFunction(list1, (value >= 9) & (value < 1))

1 个答案:

答案 0 :(得分:1)

您不能以该格式传递条件,即无效的Python语法。但是您可以制作简单的lambda函数并将其作为参数传递:

def myFunction(list1, condition) :
    for value in list1:
        if condition(value):   # note we call here the lambda function
            print(value, "out of range")
        else :
            print(value, "within range")

list1 =[1, 2, 3, 0, 5, 10]

myFunction(list1, lambda value: (value >= 9) | (value < 1))

打印:

1 within range
2 within range
3 within range
0 out of range
5 within range
10 out of range

编辑:如果lambda函数还不够,您可以使用def做标准函数,并将其作为lambda传递给myFunction

或者(如注释中提到的@Solonotix),任何具有__call__方法的对象。