Python 3.0
Не знаю когда выйдет «Пайтон» версии 3 (roadmap я не смотрел), но что в нём нового мне хочется знать уже сейчас. Из всех изменений для меня наиболее непонятное замена конструкции print на функцию с тем же названием. Видимо для того, чтобы можно было её перекрыть?
Это изменение для меня лично неудобно. В дальнейшем придётся держать в голове на какой версии я пишу — 2.5 или 3.0 (в 2.6 эту функцию можно импортировать из модуля __future__). В Python 2.5 конструкция print () выведет пустой тупл (tuple), а в Python 3.0 — пустую строку. Соотвественно, print (’a’, ’b’) в 2.5 означает печать тупла со значениями ’a’ и ’b’, а в 3.0 — вывод двух строковых параметров.
Все остальные изменения одобряю со страшной силой (хотя зачем нужно было рушить синтаксис исключений мне тоже неведомо, чтобы не пересекались указания нескольких обрабатываемых исключений и переменные, куда они помещаются?).
Никакой альтернативы двойным подчеркиваниям не придумали?
Комментарий для sl37.livejournal.com:
Увы, нет :(
Это одна из двух вещей, которая в Пайтоне мне кажется костылём. Зато вполне логично заменили range на xrange. Существование их двоих мне всегда казалось избыточным. Ещё понравилось, что has_key у словарей заменили на in.
А вот за что убили мой любимый <> я не знаю. Мне он всегда больше нравился, чем !=
Комментарий для Евгения Степанищева:
Ну «!=» — это «не равно», а «<>» — это «меньше-больше» ;)
Да, единственное, что мне не нравится в Питоне — __это__подчёркивания__.
Комментарий для wiktar.com:
a!=b — это «факториал „а“ равен „b“», а <> — это «больше или меньше».
мне ещё декораторы в Python не нравятся.
Комментарий для Евгения Степанищева:
На мой взгляд, люди чаще оперируют понятием «не равно», нежели «больше или меньше».
Комментарий для zencd.livejournal.com:
!= — это такой же набор значков, как и <>. Никто в уме не раскладывает его на «не» и «равно», тем более, что это и неверно, так как «=» — это присваивание, «==» — вот так записывается сравнение. Значки воспринимаются монолитно и какой как воспринимается — вопрос опыта, а не логики. Вряд ли кто-то скажет, что «@something» — это декоратор в «Пайтоне». Почему «@»? Какая тут логика?
Так что я тут «!=» ровно столь же логичен, как и <>. Но последний мне нравится больше из-за одинаковой насыщенности элементов.
in для словарей и в 2.5 есть.
А декораторы чем тебе не нравятся?
Комментарий для voldmar.ya.ru:
Декораторы не нравятся тем, что это похоже на макроязык. А мне не нравятся макроязыки.
Я неверно высказался. «has_key» у словарей больше не будет, будет только «in».
Комментарий для Евгения Степанищева:
Это ты про навешивание десяти декораторов на функцию?
Комментарий для voldmar.ya.ru:
И про это тоже. Сама конструкция @что-то кажется очень чужеродной.
Комментарий для Евгения Степанищева:
Всё-таки в != и <> есть логика, в отличии от @, где приходится тупо запоминать. Так что не согласен что «вопрос опыта». Ну ладно можно и на брэйнфаке писать, но на интуитивность такое решение уже не претендует.
Лично я про себя думаю «не равно», я в этом плане ограничиваюсь и использую минимум конструкций. Полагаю, именно из-за этого связка «!» («не») с «=» («равно») мне идеально подходит. Если бы я думал «больше или меньше», идеальнее было бы «<>». Кстати, в «<>» ещё и отсутствует слово «или»; может и мелочь, но «!=» в этом смысле полнее описывает работу мозга и в этом же смысле короче («не равно» vs «больше или меньше»).
Вообщем, хорошо бы собрать статистику как думают программисты и на основе этого принимать решение — всё ж для людей дело делается :-)
Комментарий для zencd.livejournal.com:
Экая теория из ничего ;)
Логично или нет, а связка «!=» просто запоминается. Распознаётся тоже монолитно. А мы можем сознательно её делить или нет. Если же говорить о том, что лучше с точки зрения логики, то я за <>, она более раскрывает суть, чем «неравно». Думаю, спор, по большому счёт, пустой. В Python3 этой конструкции не будет и (увы) точка.