Symbols as parameters?

Dave Angel davea at
Thu Jan 21 17:01:18 CET 2010

Martin Drautzburg wrote:
> Hello all,
> When passing parameters to a function, you sometimes need a paramter
> which can only assume certain values, e.g.
>         def move (direction):
>                 ...
> If direction can only be "up", "down", "left" or "right", you can solve
> this by passing strings, but this is not quite to the point:
>         - you could pass invalid strings easily
>         - you need to quote thigs, which is a nuisance
>         - the parameter IS REALLY NOT A STRING, but a direction
> Alternatively you could export such symbols, so when you "import *" you
> have them available in the caller's namespace. But that forces you
> to "import *" which pollutes your namespace.
> What I am really looking for is a way
>         - to be able to call move(up)
>         - having the "up" symbol only in the context of the function call
> So it should look something like this
> ... magic, magic ...
> move(up)
> ... unmagic, unmagic ...
> print up
> This should complain that "up" is not defined during the "print" call,
> but not when move() is called. And of course there should be as little
> magic as possible.
> Any way to achieve this?
My favorite answer provided by others was adding the attributes to the 
function right after the function definition, then using

But another approach is to define the function as:

def move(up=False, down=False, right=False, left=False):
    if up:
   if down:

and call it as:



More information about the Python-list mailing list