[Python-ideas] Ruby-style Blocks in Python Idea

Guido van Rossum guido at python.org
Tue Mar 10 18:24:59 CET 2009

On Tue, Mar 10, 2009 at 10:13 AM, Calvin Spealman <ironfroggy at gmail.com> wrote:
> On Mon, Mar 9, 2009 at 12:39 PM, Guido van Rossum <guido at python.org> wrote:
>> On Mon, Mar 9, 2009 at 6:04 AM, tav <tav at espians.com> wrote:
>>> I've come up with a way to do Ruby-style blocks in what I feel to be a
>>> Pythonic way:
>>>  using employees.select do (employee):
>>>      if employee.salary > developer.salary:
>>>          fireEmployee(employee)
>>>      else:
>>>          extendContract(employee)
>> Sounds like you might as well write a decorator named @using:
>>  @using(employees.select)
>>  def _(employee):
>>     if employee.salary > developer.salary:
>>         fireEmployee(employee)
>>     else:
>>         extendContract(employee)
> What would `using` here do that decorating the temp function with
> employees.select itself wouldn't do? All you are doing is saying "Pass
> this function to this function" which is exactly what decorators
> already do.

I think the original proposal was implying some kind of loop over the
values returned by employees.select(). But it's really irrelevant for
the equivalency.

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-ideas mailing list