Форум сайта python.su
6
eugenk
Вот тут не знаю. Меня например, привыкшего к фигурным скобкам, первое время (да пожалуй и сейчас тоже) дико раздражали отступы. Особенно когда происходит выход из чего-то глубоко вложенного, это просто пепецЪ как выглядит…
[x for x in y if z]


Но то уже скорее эстетика. Куда неприятнее например мне было узнать, что в питоне нет оператора switch-case.
if a == 4: pass elif a in 5,6,22: pass elif a in range(94,1991): pass else: pass
Офлайн
6
Кстати, да, python неприятен, когда его используешь НЕПРАВИЛЬНО.
А потом смотришь старый код, и 30 строчек преобразуешь в одну
Python не любит НЕЭЛЕГАНТНОСТИ 
Отредактировано wbt (Авг. 16, 2013 07:26:42)
Офлайн
857
eugenk
Когда ни мне ни IDE непонятно, с чем работает та или иная функция в проекте размером в несколько тысяч строк.
[guest@localhost ~]$ python3 -c 'import this' | tail -3
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
[guest@localhost ~]$
Офлайн
0
Обратите внимание на Code Like a Pythonista: Idiomatic Python, лишним точно не будет, а вот пользу извлечь можно.
Офлайн
32
прочитал 5 страниц, решил высказаться :)
eugenk
Когда ни мне ни IDE непонятно, с чем работает та или иная функция в проекте размером в несколько тысяч строк.
Офлайн
Любопытно, что на протяжении 5 страниц питон только нахваливают но книжек толковых не посоветовали, я бы тоже почитал.
Может, я что-то неправильно делаю, использую питон с 2007 года, но я бы тоже не отказался от статической типизации в python. Я ведь работаю или с классами стандартной библиотеки (int, string и более сложные) или со своими собственными классами. В обоих случаях присутствует понятие тип и мне бы не составило особого труда обозначать типы переменных в сигнатурах функций и при объявлении переменных. Я уже давно не писал на static typing языках и может быть, что-то упускаю и на самом деле я не хочу static typing в питоне.
В ней имеет место быть поле width, описывающее ширину. Допустим я хочу задать ширину равной 200. Но я описАлся и пишу вместо panel.width=200, panel.widht=200. Яваскрипт поймет это как то, что для объекта panel введено новое поле widht и ему присвоено значение 200. IDE этот момент не отловит. А поскольку язык не компилируемый, ошибка вылезет только при исполнении и может быть поймана только после долгого мозгофакства на тему почему оно не работает как надо. В С++, благодаря его статической типизации, оно будет выявлено еще при наборе кода с помощью IDE. Что будет на питоне - пока не знаю, ибо с классами еще не программировал. Но опыт использования драйвера для MongoDB, настраивает на довольно мрачные мысли.
Офлайн
75
lorienа может fay ?
Яваскрипт поймет это как то, что для объекта panel введено новое поле widht и ему присвоено значение 200.
Офлайн
> а может fay ?
не понял, что вы написали
Офлайн
33
lorienВ 3 версии можно (опционально) указывать тип переменных функций и возвращаемого результата, переменных класса.
В обоих случаях присутствует понятие тип и мне бы не составило особого труда обозначать типы переменных в сигнатурах функций и при объявлении переменных.
Но я описАлся и пишу вместо panel.width=200, panel.widht=200. Яваскрипт поймет это как то, что для объекта panel введено новое поле widht и ему присвоено значение 200. IDE этот момент не отловит.Отловит.
Офлайн
75
fay это яваскрипт для хаскелистов (принцип такой же как у coffescript) там нет такого безобразия
lorien
А поскольку язык не компилируемый, ошибка вылезет только при исполнении
Офлайн