Supply condition in function call

Ian Kelly ian.g.kelly at gmail.com
Wed Mar 25 13:44:07 EDT 2015


On Wed, Mar 25, 2015 at 11:29 AM, Manuel Graune <manuel.graune at koeln.de> wrote:
> Hi,
>
> I'm looking for a way to supply a condition to an if-statement inside a
> function body when calling the function. I can sort of get what I want
> with using eval (see code below) but I would like to achieve this in a
> safer way. If there is a solution which is safer while being
> less flexible, that would be fine. Also, supplying the condition as a
> string is not necessary. What I want to do is basically like this:
>
> def test1(a, b, condition="True"):
>     for i,j in zip(a,b):
>         c=i+j
>         if eval(condition):
>            print("Foo")

Pass the condition as a function.

def test1(a, b, condition=lambda i, j: True):
    for i,j in zip(a,b):
        c=i+j
        if condition(i, j):
            print("Foo")

test1([0,1,2,3],[1,2,3,4], lambda i, j: i+j > 4)
# etc.

If you find lambdas confusing and prefer named functions, those will
work just as well.

def i_plus_j_gt_4(i, j):
    return i + j > 4

test1([0,1,2,3],[1,2,3,4], i_plus_j_gt_4)



More information about the Python-list mailing list