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