Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2013 19:10:41

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Статическая типизация в питоне

> В 3 версии можно (опционально) указывать тип переменных функций и возвращаемого результата, переменных класса.
> Нужно что-то еще?

Я не говорил, что мне *нужна* статическая типизация, скорее, я бы хотел попробовать “как оно”, возможно, мне бы не понравилось. Если фантазировать в этом направлении, то кроме указывания типа переменных и возвращаемого результата, я бы хотел проверку этих типов на уровне интерпретатора (а не IDE), чтобы хотя бы в runtime ловить ошибки неправильных типов. Или py3k уже позволяет это делать? Я не совсем в курсе новинок третьей ветки.

Офлайн

#2 Авг. 17, 2013 19:51:36

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
я бы хотел проверку этих типов на уровне интерпретатора (а не IDE), чтобы хотя бы в runtime ловить ошибки неправильных типов
Для чего?
Речь ведь не идет о тех ошибках, которые выявляются с помощью code review, unit testing и regression testing.
И не о тех ошибках, которые вылезут просто при запуске при попытке вызвать неверный метод.
Какие еще ошибки неправильных типов могут быть, которые пропустят вышеперечисленные методы?



Офлайн

#3 Авг. 17, 2013 20:34:28

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
> Или py3k уже позволяет это делать?.
там можно самому написать декоратор из пары строк для простой проверки в рантайме
интересные ссылки по теме:
http://lambda-the-ultimate.org/node/1519
http://ceronman.com/2013/03/12/a-powerful-unused-feature-of-python-function-annotations/

Офлайн

#4 Авг. 17, 2013 20:35:56

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Статическая типизация в питоне

В большинстве проектов я не пишу тестов. И code review некому делать т.к. часто я сам для себя пишу или я один в проекте работаю.

Офлайн

#5 Авг. 17, 2013 21:02:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
В большинстве проектов я не пишу тестов.
и если получается что-то не очень продуманное, то оно оставляется, потому что переделывать долго



Офлайн

#6 Авг. 18, 2013 12:44:37

eugenk
Зарегистрирован: 2013-08-15
Сообщения: 12
Репутация: +  -1  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
Можно использовать слоты (google: python __slot__), это такая хрень, которая оптимизирует потребление памяти объектами за счёт выкидывания __dict__ хреновины из объектов (не знаю, как по научному сказать). Я недавно стал прикручивать слоты в классы своей библиотеки Grab, судя по тестам она стала течь (memory leaks) меньше. Побочным эффектом использования слотов является то, что нельзя уже будет написать obj.widht вместо obj.width - выпадет ошибка т.к. widht не будет описан в слотах. Правда ошибка будет runtime, а не “compile time”, но уже неплохо.

Спасибо ! Это уже более интересно. Хотя пока про эту штуку не читал. Скажите, оно в версии 2.7 работает ? Дело в том что я ограничен в выборе версии питона. Одна из основ моего проекта - NLTK, который в данный момент не работает на 3.Х.
А насчет почитать - увы. Сам заметил что никто ничего не посоветовал. Скорее всего потому, что таких книжек просто нет. Есть либо совсем начального уровня типа Луца, либо слишком уж ориентированные на конкретные приложения, а не на язык. Сейчас читаю Python Cookbook 3-ed. Книжка совсем новая 2013 года издания. Кому надо - лежит на rutracker.org. Но то скорее некоторая смесь. Хотя и весьма полезная. Хотелось бы какого-то регулярного изложения.

Офлайн

#7 Авг. 18, 2013 13:03:40

eugenk
Зарегистрирован: 2013-08-15
Сообщения: 12
Репутация: +  -1  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

Lexander
В остальном я против, т.к. толку мало (ну не заменит Python Java в корпоративной среде!), а мороки и лишней писанины типа объявления переменных - много.
Плюс стат. типизация помогает разобраться с длинными текстами, а для Питона длинные тексты - моветон.
Вообще-то мне куда более интересно не с чем-то разбираться, а поручить это дело IDE. Ну есть у Вас скажем какой-то злобный класс с парой десятков если не поболее того полей. Вы пишете, что объект “черт с рогами” принадлежит к злобному классу. Потом в программе пишете черт_с_рогами и ставите точку. IDE сама открывает список автокомплита, из которого Вы выбираете нужное поле. Как это может работать без статической типизации, хотя бы опциональной - хоть убейте не понимаю. Во всяком случае работаю сейчас на PyCharm 2.7.3 самой последней сборки и с питоном и с яваскриптом. Оно пытается делать автокомплит, но выходит это более чем хреново. И ведь это жуткий монстр, брендового производителя, превосходящий по качеству VisualStudio, а не фигня какая-то ! Там даже вероятностные методы анализа и самообучение используются, чтобы определить неопределенный тип, как я понял из наблюдений ! А результат все равно как говорится, оставляет желать… Так что типизация, хотя бы на уровне аннотаций, по-моему штука абсолютно необходимая. Да, чтобы скажем посчитать корни квадратного уравнения, это излишне. Но когда проект достигает хотя бы нескольких тысяч строк, без нее по-моему просто не обойтись.

Офлайн

#8 Авг. 18, 2013 13:40:28

ring0za
Зарегистрирован: 2012-08-13
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

Странно вообще видеть такие посты на форуме, я честно говоря рад даже что нет статической типизации.

Офлайн

#9 Авг. 18, 2013 13:44:05

wbt
Зарегистрирован: 2013-08-13
Сообщения: 143
Репутация: +  6  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

война - фигня, главное - маневры

Сейчас полдня прописал в mcedit, случайно зашёл и не смог остановиться. При этом, у меня в mcedit стоит особая тема, чтобы отличать от другого mcedit. Фишка этой темы в том, что на гномовском терминале вообще ничего не видно. Практически не видно текста, а уж отличить точку от запятой и их обоих от пробела - нереально вообще. Если врубается подсветка, приходится HOME-F3-END-F3 делать, чтобы увидеть, что там написано. А так - в основном вслепую.

При этом нормального буфера обмена в mcedit нет, особо не покопипастишь (к счастью). Если зашёл глубоко по иерархии, то нужно возвращаться, чтобы запустить, а потом ещё вспоминать, откуда вернулся.

Так что мне ваши проблемы IDE, не IDE - непонятны. И от количества строк тут ничего не зависит - чем больше мусора в коде, тем больше его в любом случае придётся держать в голове - ide ничего не заменяет и ничего В ПОНИМАНИИ не упрощает. Она только даёт разные финтифлюшки.

А что забирает? (по сравнению с mc?). Этап подготовки - 0, я на любом linux/*bsd могу сразу сесть и начать что-то делать, а не мучаться. Этап запуска - 0, у меня все файлы в панели, не нужно что-то открывать, за чем-то следить, что-то создавать. Скорость работы редактора - максимальная, никаких приостановок и задумчивостей. Все команды python - под рукой, не отрывая рук набрал python/ipython и запустил консоль. Аналогично с созданием тестовых или рабочих файлов, аналогично с копированием файлов и других шаблонов. Все команды hg - под рукой, не нужно их искать, не нужно искать, куда их вводить, они вводятся на-месте. Meta-? - поиск по директории, опять же без подготовки.

А вы говорите ide. На ide надейся, она тебе и нагородит. Для логики и для web, где чертить не надо, лучше самому понимать и помнить, что происходит,



Бейсик - не порок, Гвидо - не пророк

Офлайн

#10 Авг. 18, 2013 13:52:17

ring0za
Зарегистрирован: 2012-08-13
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

А я на sublime - text2 перешел, мне очень нравятся возможности по обработке текста в целом, чего стоит только ctrl+d, ctrl+k…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version