what's wrong with "lambda x : print x/60,x%60"
Paul Rubin
http
Wed Dec 7 06:25:53 EST 2005
Steve Holden <steve at holdenweb.com> writes:
> > All joking aside, when I have names (temporary variables or scaffolding
> > functions) that I need to initialise a module or data structure, but then
> > outlive their usefulness, I del the name afterwards. Am I the only one? I
> > can't say I've seen anyone else doing that, and it feels icky to me (for
> > no reason I can put my finger on) -- what do others think?
I do that too sometimes. I think it's a Python weakness that you
can't declare a local var like in other languages, to go out of scope
at the end of the current block, e.g.:
if cond:
my x = 7 # make a new scope for x, goes out of scope at end of if
> I don't generally speaking see the point: unless the name is
> referencing something potentially large (like the results of a
> database query) and won't be going out of scope soon (which typically
> happens at the end of the current method or function) I just leave it
> to happen automatically. If it doesn't happen (because the name exists
> at module scope) thwn what the heck.
Well, that makes the code a little bit confusing. If you say
x = some_intermediate_result(...)
do_something_with (x)
do you know for sure whether x will be needed again? Are you sure you
didn't use the name x further up in the function for something that's
still needed?
This is one of the areas where there's tension between Python the
scripting language, that gains by saving a few keystrokes when
throwing together a quick hack, and Python the language for developing
long-lasting applications that have to be maintained by multiple people.
In Haskell you can even have temporary variables inside an expression:
x = y + y*y + 3 where y=5
sets x to 33. I believe (not absolutely sure) that the scope of y is
limited to that expression.
More information about the Python-list
mailing list