Trivial performance questions
Brian Patterson
bp at computastore.com
Fri Oct 17 09:05:47 EDT 2003
I have noticed in the book of words that hasattr works by calling getattr
and raising an exception if no such attribute exists. If I need the value
in any case, am I better off using getattr within a try statement myself, or
is there some clever implementation enhancement which makes this a bad idea?
i.e. should I prefer:
if hasattr(self,"datum"):
datum=getattr("datum")
else:
datum=None
self.datum=None
over:
try:
datum=self.getattr("datum")
except:
self.datum=None
datum=None
The concept of deliberately raising an error is still foreign to this python
newbie, but I really like the trapping facilities. I just worry about the
performance implications and memory usage of such things, especially since
I'm writing for Zope.
And while I'm here: Is there a difference in performance when checking:
datum is None
over:
datum == None
and similarly:
if x is None or y is None:
or:
if None in (x,y):
I appreciate that these are trivial in the extreme, but I seem to be writing
dozens of them, and I may as well use the right one and squeeze what
performance I can.
Many thanks,
Christopher Boomer.
More information about the Python-list
mailing list