2022-04-11

2022-04-11 08:10 am

There should be one-- and preferably only one --obvious way to do it.

Продолжаю изучать Пайтон.

Зачем?
Сказали, нужно переписать все с Perl на него, так как первый люди не понимают.

> python -c 'import this' | grep 'only one'
There should be one-- and preferably only one --obvious way to do it.

Но только начал изучать - сразу удивления и вопросы.

У объекта список искал метод len. Не нашёл.
Но нашёл функцию len, которая, как говорится, вызывает метод __len__.
При этом функция len - это объект, который имеет свои методы,
в том числе мето __call__:

>>> len.__call__([1,2,3])
3

То есть len - это len.__call__, который вызывает [1,2,3].__len__.

Но для встроенных типов len не делает таких вызовов, а просто сразу вернет значение с C структуры (CPython).

Говорят, это вторая причина почему так сделали.
Первая причина: Диктатору больше нравиться len(l), чем l.len().
Но злые языки поговаривают, что он не мог решить: метод или свойство, - поэтому выбрал функцию.

Или я капризничаю? Но ведь Пайтон позиционируется как простой язык легкий в обучении.
Як то кажуть "А ваша Галя балувана".