Вы не можете передать условие в этой форме, это не правильный синтаксис 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
и передайте ее myFunction
как лямбду.
Или (как упомянуто в комментариях @Solonotix) любой объект с методом __call__
).