Symbols as parameters?
Diez B. Roggisch
deets at nospam.web.de
Thu Jan 21 18:16:31 EST 2010
Am 21.01.10 22:51, schrieb 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.
>
> (2) Using enum's was suggested. That is good to know, but again it is
> just a way to define constants in the caller's namespace.
>
> (3) Then somone suggested to tie the constants to the function itself,
> as in
> def move(direction):
> print "moving %s" % direction
>
> move.UP = 'up'
> move.DOWN = 'down'
>
> This is quite nice. Then again the "move." is just some object which
> allows attributes, and which only happens to have the same name as the
> function. Well in this case it IS the function, alright, but I could
> just as well have used a Class as in
>
> class m: pass
> m.UP = 'up'
>
>
> (4) Finally someone mentioned DSLs. I guess thats absolutely correct.
> This is what I am struggeling to achieve. I did a little googling ("how
> to write DSLs in python"), but haven't found anything appealing yet.
> Any pointers would be appreciated.
>
> (5) Here is something I came up with myself:
>
> def symbols(aDict):
> aDict["foo"] = "bar"
>
> def someFunction(aFoo):
> print aFoo
>
> symbols(locals())
> someFunction (foo) #Eh voila: foo is magically defined
http://docs.python.org/library/functions.html#locals
If it works, it's more an accident than anything else, and can go away
without prior notice.
Diez
More information about the Python-list
mailing list