[Python-Dev] PEP 318: Order of operations (original) (raw)

Ka-Ping Yee python-dev at zesty.ca
Tue Mar 30 06:33:45 EST 2004


Referring back to this example:

It all fits together beautifully.

def func(arg, arg) [optimized, classmethod]: .author = 'Sir Galahad' .version = 42 """Description.""" code more code

These syntax decisions work well together because they make it visually obvious what is going to happen in what order.

    first do this       then this   then this
          |                 |           |
          v                 |           |
.--------------------.      v           v
| def func(arg, arg) | [optimized, classmethod]:
|                    '---------.
|     .author = 'Sir Galahad'  |
|     .version = 42            |
|     """Description."""       |
|     code                     |
|     more code                |
'------------------------------'

First, the function is defined with the attributes set in it; then the decorators are applied from left to right. That's good because it lets us set attributes that pass information to decorators, as in Paul's examples:

def foo(self) [spark]:
    .spark_rule = 'DOC := HEAD BODY FOOT'

def foo(self) [publish_to_web]:
    .url = '/cgi-bin/directory/directory'

-- ?!ng



More information about the Python-Dev mailing list