On 7/17/2012 4:23 AM, Andrew Berg wrote:
On 7/17/2012 2:08 AM, Steven D'Aprano wrote:
The default behaviour is that every object is something, hence true-like,
unless explicitly coded to be treated as false-like. Since both loggers
and functions are objects, they are true-like unless the default is
overridden.
I am aware of the default behavior, but the reason for it still eludes me.

Ultimately, because Guido's intuition said that the current behavior is the best. I happen to agree on this one.

Quoting from elsewhere:
> If it truly is about something vs. nothing, why is a NameError (or
> AttributeError) raised when testing with an undefined variable?


Python does not have 'undefined variable' objects in the way that some other languages do. There is nothing to test 'with'. 'if undefined_name:' raises NameError because all uses of undefined_names other that assignments do. The actually execution order is expression first, then if. You can explicitly test "'some_name' in namespace" or "hasattr(obj, 'somename') by turning the possibly undefined name into a string object.

--
Terry Jan Reedy



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to