syntax for code blocks

Kiuhnm kiuhnm03.4t.yahoo.it
Tue May 1 10:18:03 EDT 2012


On 5/1/2012 5:27, alex23 wrote:
> On Apr 30, 2:05 am, Peter Pearson<ppear... at nowhere.invalid>  wrote:
>> Hey, guys, am I the only one here who can't even guess what
>> this code does?  When did Python become so obscure?
>
> Thankfully it hasn't. The most Pythonic way to pass around a code
> block is still to use a function.

"Most Pythonic" doesn't mean better, unfortunately.

For instance, assume that you want to write a function that accepts a 
dictionary of callbacks:
   func(some_args, callbacks)

Pythonic way
------------

def when_odd(n):
     pass

def when_prime(n):
     pass

def before_check():
     pass

def after_check():
     pass

func(some_args, {'when_odd' : when_odd,
                  'when_prime' : when_prime,
                  'before_check' : before_check,
                  'after_check' : after_check})

def when_prime(n):
     pass

def when_perfect(n):
     pass

def before_reduction()
     pass

def after_reduction():
     pass

func(some_args, {'when_prime' : when_prime,
                  'when_perfect' : when_perfect,
                  'before_reduction' : before_reduction,
                  'after_reduction' : after_reduction})

My way
------

with func(some_args) << ':dict':
     with when_odd as 'n':
         pass
     with when_prime as 'n':
         pass
     with before_check as '':
         pass
     with after_check as '':
         pass

with func(some_args) << ':dict':
     with when_prime as 'n':
         pass
     with when_perfect as 'n':
         pass
     with before_reduction as '':
         pass
     with after_reduction as '':
         pass

Kiuhnm



More information about the Python-list mailing list