O'Reilly logo
  • Chris Kang thinks this is interesting:

As a rule of thumb, Python’s toolset is layered: generic operations that span multiple types show up as built-in functions or expressions (e.g., len(X), X[0]), but type-specific operations are method calls (e.g., aString.upper()).

From

Cover of Learning Python, 5th Edition

Note

len() is not called on an object (ie. like a global function). [] is called as an operator, not a function call. These are type neutral.