On Wed, Mar 25, 2015 at 1:51 PM, Manuel Graune <manuel.gra...@koeln.de> wrote: > Joel Goldstick <joel.goldst...@gmail.com> writes: > >> On Wed, Mar 25, 2015 at 1:29 PM, Manuel Graune <manuel.gra...@koeln.de> >> wrote: >>> >>> def test1(a, b, condition="True"): >>> for i,j in zip(a,b): >>> c=i+j >>> if eval(condition): >>> print("Foo") >>> >> I'm not sure I understand your question, but condition will evaluate >> to True or False regardless, so: >> if condition: >> print ("Foo") >> else: >> print ("Bar") >> > > The point is (see examples below) to specify the condition that is to be > evaluated when calling the function (as opposed to when stating the function). > >> eval can be dangerous as someone could put some unknown command with >> side effects in condition >> > > I know that. That's why I'm looking for an alternative. ;-)
Oh, now I see. Do you know about this: https://docs.python.org/2/library/ast.html#ast.literal_eval > >>> test1([0,1,2,3],[1,2,3,4],"i+j >4") >>> print("Bar") >>> test1([0,1,2,3],[1,2,3,4],"c >4") >>> print("Bar") >>> test1([0,1,2,3],[1,2,3,4],"a[i] >2") >>> >>> Resulting in >>> >>> Foo >>> Foo >>> Bar >>> Foo >>> Foo >>> Bar >>> Foo > > Regards, > > Manuel > > -- > A hundred men did the rational thing. The sum of those rational choices was > called panic. Neal Stephenson -- System of the world > http://www.graune.org/GnuPG_pubkey.asc > Key fingerprint = 1E44 9CBD DEE4 9E07 5E0A 5828 5476 7E92 2DB4 3C99 > -- > https://mail.python.org/mailman/listinfo/python-list -- Joel Goldstick http://joelgoldstick.com -- https://mail.python.org/mailman/listinfo/python-list