Prasad, Ramit wrote:
Interesting thread and webpages. Insightful, but is this really
used as a technique in daily practice? It feels a bit like a hack
to me. Like the author of one of the websites said: rule #1 don't
mess with this.

I think the problem with rule #1 is that this can occur when you do
*not* understand what is going on. The behavior can be non-intuitive
for programmers coming from other (more statically-typed) languages
and figuring out the programming error can be difficult depending on
the complexity/design of the function or program.

It actually has nothing to do with whether the language is statically typed or dynamically typed. It has everything to do with whether default arguments are early bound or late bound. That is, given the function definition:

def func(arg=something):
    pass

does the default argument `something` get created once (early binding, occurs one time only when the function is defined) or multiple times (late binding, each time the function is called)?

In my experience, most people aren't even aware that there are two potential behaviours until they implicitly assume the one their language doesn't support.



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to