On Fri, 23 Dec 2011 19:24:44 -0500, Devin Jeanpierre wrote: >> To fake early binding when the language provides late binding, you >> still use a sentinel value, but the initialization code creating the >> default value is outside the body of the function, usually in a global >> variable: >> >> _DEFAULT_Y = [] # Private constant, don't touch. >> >> def func(x, y=None): >> if y is None: >> y = _DEFAULT_Y >> ... >> >> This separates parts of the code that should be together, and relies on >> a global, with all the disadvantages that implies. > > No, you can just do def func(x, y=_DEFAULT_Y): ...
Point taken. Nevertheless, the semantics are still not the same as actual early binding: if the global name is deleted or changed, the function stops working. -- Steven -- http://mail.python.org/mailman/listinfo/python-list