* Martin Drautzburg:
Thanks for all the answers. Let me summarize

(1) I fail to see the relevance of >>> def move( direction ):
...   print( "move " + str( direction ) )
...
 >>> move( "up" )
move up

not only in the context of my question. And I don't see an abuse of the
language either. Maybe this could pass as a Zen Puzzle.

Oh. You focused on the wrong details, then. Sorry for not providing a textual explanation, but I thought anyone not understanding it would just ask (that's normal in other Usenet groups that I'm familiar with).

So, explanation...

Here's your problem description, from the start of the thread:

<quote>
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.
</quote>


The code corresponding to your first "magic, magic ..." is

    class using_directions:
        # Whatever statement (import?) defines symbolic directions goes here

Then comes your  --  note the added indentation

        move( up )

Your "... unmagic, unmagic" is simply to go back to the previous indent level.

So your example's following

    print up

at this point complaints that "up" is not defined, as you require (no general namespace pollution, although there is a slight but controllable pollution, namely the class name).

Not that I recommend this technique. ;-) But it does exactly what you asked, quoted above.

The best technique in my view is what you came up with yourself in the article I'm responding to (but snipped by me), namely a class with the constants and the function. It doesn't do what you required originally. But it's much better! :-)


Cheers & hth.,

- Alf
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to