Symbols as parameters?
davea at ieee.org
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 ...
> ... 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):
and call it as:
More information about the Python-list