Alan Gauld wrote:

As an aside, I did try to create a lambda based solution but was
unable.  Let me know what's wrong:

ftable = { 'a' : lambda: print 'a',
SyntaxError: invalid syntax

I did say "if Python had *proper* lambdas..."

Unfortunately Python insists on only having *expressions* as
lambdas and since print is a command not a function you can't
use it in Python lambdas! Dumb or what??!

So you are stuck with predefining a bunch of one liner
functions and then creating a dictionary or going back
to if/elif chains, which is where we came in... :-)

Well, in this particular case, if one really wants to use lambdas then one could (after importing sys, of course) replace the print statement with a call to sys.stdout.write() --


    ftable = { 'a': lambda: sys.stdout.write('a\n'), ... }

Note that sys.stdout.write() will *not* automatically add the newline that print does (which is why I've specified it in the above sample). Indeed, print can do all sorts of odd things with whitespace, leaving sys.stdout.write() as the best way to have real control over your output anyhow...

Jeff Shannon
Technician/Programmer
Credit International



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to