lambdak: multi-line lambda implementation in native Python

Mark Lawrence breamoreboy at yahoo.co.uk
Thu Jan 15 12:22:16 EST 2015


On 15/01/2015 06:39, Ian Kelly wrote:
> On Wed, Jan 14, 2015 at 11:06 PM, Steven D'Aprano <steve at pearwood.info> wrote:
>> I have a function, which I put into an expression like this:
>>
>> def func(a, b=None):
>>      global spam
>>      import math
>>      spam = [a, b]*3
>>      print spam
>>      del spam
>>
>>
>> value = [1, "hello", int, func]
>> del func
>>
>> How would I use lambdak to write that as an expression
>>
>> value = [1, "hello", int, ??????? ]
>>
>> without the intermediate def?
>
>
> # Untested, but seems like this should work.
>
> value = [1, "hello", int, given_(lambda a, b=None:
>      import_("math", lambda math:
>      import_("operator", lambda operator:
>      do_(lambda: operator.setitem(globals(), 'spam', [a, b]*3), lambda:
>      print_(globals()['spam'], lambda:
>      do_(lambda: operator.delitem(globals(), 'spam')))))))]
>
>
> To the OP: I note that although import_ is used in the examples, it's
> not found in the list of functions in the README.
>

Just what I've been looking for, highly readable, higly maintainable 
Python code.  Please put this up as an Activestate recipe so it's 
preserved for prosperity, so that the entire world can see its 
asthetically pleasing properties.

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list