Re: [Zope-Checkins] SVN: Zope/trunk/lib/python/OFS/Traversable.py using startswith()
On 2/28/06, Andreas Jung <andreas@andreas-jung.com> wrote:
- if name[0] == '_': + if name.startswith('_'):
Just a question: Is this only a matter of stylistic changes, or is there some, like, speedup involved? -- Lennart Regebro, Nuxeo http://www.nuxeo.com/ CPS Content Management http://www.cps-project.org/
Lennart Regebro wrote:
- if name[0] == '_': + if name.startswith('_'):
Just a question: Is this only a matter of stylistic changes, or is there some, like, speedup involved?
In general, using str.startswith and str.endswith is a failsafe because ''.startswith('_') simply returns False, ''[0] == '_' raises a KeyError. So, if you really know that your string has at least the length you're trying to test it against, using the index/slice notation is ok. In all other cases I would prefer str.startswith and str.endswith. Philipp
--On 28. Februar 2006 21:41:24 +0100 Philipp von Weitershausen <philipp@weitershausen.de> wrote:
Lennart Regebro wrote:
- if name[0] == '_': + if name.startswith('_'):
Just a question: Is this only a matter of stylistic changes, or is there some, like, speedup involved?
In general, using str.startswith and str.endswith is a failsafe because ''.startswith('_') simply returns False, ''[0] == '_' raises a KeyError. So, if you really know that your string has at least the length you're trying to test it against, using the index/slice notation is ok. In all other cases I would prefer str.startswith and str.endswith.
But Lennart is right that in this case name should in general never be an empty string and in addition startswith() is in this case 100% slower than using slicing. -aj
But Lennart is right that in this case name should in general never be an empty string and in addition startswith() is in this case 100% slower than using slicing.
No, I'm not, Florent is. I just asked. :-) -- Lennart Regebro, Nuxeo http://www.nuxeo.com/ CPS Content Management http://www.cps-project.org/
participants (3)
-
Andreas Jung -
Lennart Regebro -
Philipp von Weitershausen