> Perhaps in statically typed languages. Python is dynamic, so a x.length()
> requires a method lookup and that's expensive. len(x) on the contrary, can
> be optimized on a case by case basis -- it DOESN'T translate to
> x.__len__() as some might think.
> See
> http://www.python.org/doc/faq/general/#why-does-python-use-methods-
for-some
>-functionality-e-g-list-index-but-functions-for-other-e-g-len-list

I don't know... the gist of the FAQ you link to is "that's legacy code and we 
don't want to change it in order not to break code". It doesn't try to justify 
the continued existence of len() and friends with technical arguments. I'll 
grant you that avoiding a method lookup is cheaper, another question is 
whether the difference would be noticeable in practice. I'd say that if 
methods were such a bad thing, that would put in question the 
implementation of the whole OO paradigm in Python, no?

> On a side note, there is an alternative to dir(), more human-friendly:
> http://inky.github.com/see/
>
> py> see("a")
>    ?   []   in   +   *   %   <   <=   ==   !=   >   >=   len()
> .capitalize()
>    .center()   .count()   .decode()   .encode()   .endswith()
> .expandtabs()
>    .find()   .format()   .index()   .isalnum()   .isalpha()   .isdigit()
>    .islower()   .isspace()   .istitle()   .isupper()   .join()   .ljust()
>    .lower()   .lstrip()   .partition()   .replace()   .rfind()   .rindex()
>    .rjust()   .rpartition()   .rsplit()   .rstrip()   .split()
> .splitlines()
>    .startswith()   .strip()   .swapcase()   .title()   .translate()
> .upper()
>    .zfill()
>
> You can see len() there.

Nice! That's indeed more readable than dir().

Cheers,

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

Reply via email to