On Oct 31, 8:44 am, Neil Cerutti <[EMAIL PROTECTED]> wrote: > On 2007-10-30, George Sakkis <[EMAIL PROTECTED]> wrote: > > > > > On Oct 30, 11:25 am, Neil Cerutti <[EMAIL PROTECTED]> wrote: > >> On 2007-10-30, Eduardo O. Padoan <[EMAIL PROTECTED]> wrote: > > >> > This is a FAQ: > >> >http://effbot.org/pyfaq/why-does-python-use-methods-for-some-function... > > >> Holy Airy Persiflage Batman! > > >> Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit > >> (Intel)] on > >> win32 > >> Type "help", "copyright", "credits" or "license" for more information.>>> > >> import timeit > >> >>> timeit.Timer('len(seq)', 'seq = range(100)').timeit() > >> 0.20332271187463391 > >> >>> timeit.Timer('seq.__len__()', 'seq = range(100)').timeit() > > >> 0.48545737364457864 > > > Common mistake; try this instead: > > > timeit.Timer('seqlen()', > > 'seq = range(100); seqlen=seq.__len__').timeit() > > Why would I want to do that?
To realize that __len__ is actually faster than len in this case; your second timing is dominated by the time to do attribute lookup. George -- http://mail.python.org/mailman/listinfo/python-list