On Mar 7, 2:48 pm, "Arnaud Delobelle" <[EMAIL PROTECTED]> wrote: > > I'm not really thinking about this situation so let me clarify. Here > is a simple concrete example, taking the following for the functions > a,b,c I mention in my original post. > - a=int > - b=float > - c=complex > - x is a string > This means I want to convert x to an int if possible, otherwise a > float, otherwise a complex, otherwise raise CantDoIt. > > I can do: > > for f in int, float, complex: > try: > return f(x) > except ValueError: > continue > raise CantDoIt > > But if the three things I want to do are not callable objects but > chunks of code this method is awkward because you have to create > functions simply in order to be able to loop over them (this is whay I > was talking about 'abusing loop constructs'). Besides I am not happy > with the other two idioms I can think of. > > -- > Arnaud
Wouldn't it be easier to do: if isinstance(x, int): # do something elif isinstance(x, float)t: # do something elif isinstance(x, complex): # do something else: raise CantDoIt or, i = [int, float, complex] for f in i: if isinstance(x, f): return x else: raise CantDoIt -- http://mail.python.org/mailman/listinfo/python-list