Extending Python Syntax with @

David MacQuigg dmq at gain.com
Wed Mar 10 22:01:00 CET 2004

Seems like we need a simple way to extend Python syntax that doesn't
break existing syntax or clash with any other syntax in Python, is
easy to type, easy to read, and is clearly distinct from the "base"
syntax.  Seems like we could put the @ symbol to good use in these
situations.  Examples:

print @(separator = None) x, y, z

@x,y:x*x+y*y    -- anonymous function

@f(x,y)         -- generator function that can accept new arguments
                   with each call

@x @y @z        -- short for instance variables in a method definition

Each of these examples is debatable, but my point is that there are
many enhancement requests like this, and some may be worthy of
inclusion in the core language.  It would be nice if there was a
consistent way to add stuff like this.  It certainly beats adding ugly
statements like 'lambda'.

It might even be possible to allow limited extension of the language
by users, provided the extensions are introduced by the special
symbol.  This would allow the flexibility of Ruby or Lisp without the
cost of forking the language into many dialects.

Maybe we should collect a bunch of little enhancements like the above,
and put them all into one PEP.  Any suggestions?  Pet peeves?  Stuff
you would like to see, but not worthy of a PEP by itself?

-- Dave

More information about the Python-list mailing list