Some "pythonic" suggestions for Python

Duncan Booth duncan.booth at invalid.invalid
Fri Nov 9 15:34:48 CET 2007


Frank Samuelson <newsdump0711.12.cudgel at neverbox.com> wrote:

>> It's also not clear how you expect this to work with anything more 
>> complex than a single expression. How do you handle statements and 
>> multiple returns?
> >
>> def foo(x, y):
>>     L = []
>>     try:
>>         if x[y] % 2:
>>             print x, y
>>             return y
>>         return x[y]
>>     except:
>>         return None
> 
> Huh?  This is trivial.  I don't see why this is so hard to grasp.
> 
> foo= function(x, y):
>      L = []
>      try:
>          if x[y] % 2:
>              print x, y
>              return y
>          return x[y]
>       except:
>           return None
> 
It is hard to grasp because you said you wanted:

    name = function(*argument_list) expression

There is no colon in your proposed syntax, and you only asked for a 
single expression in the function rather than a suite. Your 'this is 
trivial' response seems to be proposing another syntax entirely.

Unfortunately my crystal ball is away being cleaned, so I am unable to 
guess whether you meant for a function definition to be an expression 
(opening up a whole host of questions about how you nest it inside other 
expressions) or a special case of an assignment to a single name and 
wanted to disallow such things as:

foo = l[3] = function(): pass

or if you didn't mean to disallow them, what name should that function 
have.

If you are going to make syntax proposals you must be precise.



More information about the Python-list mailing list