- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
С сайта http://www.codecademy.com/
Dot Notation
Let's take a closer look at why you use len(string) and str(object), but dot notation (such as "String".upper()) for the rest.
lion = "roar"
len(lion)
lion.upper()
Methods that use dot notation only work with strings.
On the other hand, len() and str() can work on other data types.
Или нет его в создателе питона?
А вот ФЯП питоном поддерживается через лямбды. Вообще где читал, что можно питон юзать как чистый ФЯП
Полиморфизм - ну, в такой же степени как в Яве, но не как в Хаскелле.
Так она не имеет к реальности никакого отношения.
Вот здесь немного аргументации почему Гвидо сделал так: http://stackoverflow.com/a/237312/2709018
говно-отмазки.
можно было сделать оба варианта, и дать разрабу свободу, в зависимости от контекста, выбирать что/как вызывать.
я лично предпочитаю нотацию a.len() потому что в случае если что-то не ястно, то я точно знаю где смотреть доки/сырцы. в то время как len(a) - а может функция локально переопределена? и т.д.
да, len(a) читабельней. но в общем случае, a.len() нотация просто однозначна и не порождает никаких вопросов что и как. ну и само собой разумеется, a.len() я могу переопределить - len() из стандартной библиотеки переопределить шансов нету.
3
> @Peter: I'd pay $20 to anyone with photo evidence that they taped your comment to Guido's back. $50 if it's on his forehead. – bug Jan 28 '13 at 19:36
LOL
Да ну! В той же теме на SO ссылка:
http://lucumr.pocoo.org/2011/7/9/python-and-pola/
> If you look at Java in comparison what will we find? A builtin array has a field called .length. A builtin string however is an actual object and has a method called .length(). A map or list in Java responds to .size(). All the XML APIs in Java will use .getLenght() instead, so will the reflection API for arrays and the list goes on.
люди которые годами с чем то работают, последние кого надо спрашивать относительно того как близок их любимый язык к правилу наименьшего удивления.
я недавно читал нечто подобное про руби. меня просто убило что ни один из примеров (которыми восхваляли рубиновый principle of least astonishment) не отражал реалий тех граблей по которым мне как начинающему пришлось пройтись.
Лучше бы реализовать обе, наверное, как в C++11 например теперь:
Но это несколько усложняет язык. К тому же переопределять билтины нельзя, для этого и есть костыль __len__() :)
Пока не понятно, чем всё кончится.
Как в шарпике экстеншн методы?
P.S. В крестах и без этой фичи порой хер догадаешься, какая перегрузка будет вызвана...
но операторы можно и через функциональный синтакс вызывать.
а перегруженые методы, если надо, и через полное имя с именем класса.
Там звёздочку забывают добавить - наименьшего удивления для профессианального рубиста.
пропоненты principle of least astonishment слишком часто концентрируются на какие-то изолированые детали языка/библиотеки.
в конечном итоге, на больших программах, где именно это и важно для читабельности/этц, просто нифига ни разу "least astonishment", и больше "I do not want to live on this planet anymore".
Ну-ну, особенно не удивляют неявные переменные
А почему в переменную i число с плавающей точкой не сохраняется?
Ну я именно это и имел в виду.
одна из причин почему народ все еще пользуется Tcl'ем. регулярный синтакс + очень тупая в лоб интерпретация очень мощная (хоть и абсолютно криво выглядящая) штука.
Но да, там синтаксис языка можно уложить в 8 строк, и помимо ебанутых скобок удивляться нечему.
Я открыл ее для себя сегодня и не могу остановиться. рекомендую
Беги стретору поплакай в жылетку, обиженнай какол :)))
- Ахаха! я их на хуях вертел, хожу как цврь, всем по 20 минусов ставлю! У всех рейтинг говно!
Как оно на самом деле
- какой рейтинг?
Угу. Галочка "Показать все, что скрыто" в юзерскрипте рулит.
заценил игру?
Неа, лень.
Твоя Наташа
не у всех объектов тот же самый duck-typing интерфейс.
другими словами - огороды и грабли.