functions which take functions
Emile van Sebille
emile at fenx.com
Mon Apr 9 17:20:19 EDT 2012
On 4/9/2012 11:57 AM Kiuhnm said...
> Do you have some real or realistic
... yes
> (but easy and self-contained)
.... aah, no.
> examples when you had to define a (multi-statement) function and pass it
> to another function?
This weekend I added functionality to a subsystem that allows users to
write simple get functions stored in [funcname].py files in a specified
directory that are read, compliled, and stored in a dictionary to be
executed dynamically. So, when a properly crafted command is recieved
the corresponding function object is retrieved from the dictionary and
exectued.
... hang on ... ok -- here's a simple self contained example - HTH!
Emile
----
STACK=[]
def push(this):
STACK.append(int(this))
def plus(this):
tosa,tosb = STACK.pop(),STACK.pop()
push(tosa+tosb)
def minus(this):
tosa,tosb = STACK.pop(),STACK.pop()
push(tosa-tosb)
def times(this):
tosa,tosb = STACK.pop(),STACK.pop()
push(tosa*tosb)
def div(this):
tosa,tosb = STACK.pop(),STACK.pop()
push(tosb/tosa)
def equals(this):
return STACK.pop()
funcs = { "+" : plus,
"-" : minus,
"*" : times,
"/" : div,
"=" : equals
}
def calculate (text):
for part in text.split():
retval = funcs.get(part,push)(part)
return retval
assert calculate ("4 3 + =") == 7
assert calculate ("4 3 * =") == 12
assert calculate ("12 3 / =") == 4
assert calculate ("1 2 3 4 + + + =") == 10
More information about the Python-list
mailing list