Найти - Пользователи
Полная версия: Статическая типизация в питоне
Начало » Python для новичков » Статическая типизация в питоне
1 2 3 4 5 6 7 8 9 10 11
lorien
> В 3 версии можно (опционально) указывать тип переменных функций и возвращаемого результата, переменных класса.
> Нужно что-то еще?

Я не говорил, что мне *нужна* статическая типизация, скорее, я бы хотел попробовать “как оно”, возможно, мне бы не понравилось. Если фантазировать в этом направлении, то кроме указывания типа переменных и возвращаемого результата, я бы хотел проверку этих типов на уровне интерпретатора (а не IDE), чтобы хотя бы в runtime ловить ошибки неправильных типов. Или py3k уже позволяет это делать? Я не совсем в курсе новинок третьей ветки.
Lexander
lorien
я бы хотел проверку этих типов на уровне интерпретатора (а не IDE), чтобы хотя бы в runtime ловить ошибки неправильных типов
Для чего?
Речь ведь не идет о тех ошибках, которые выявляются с помощью code review, unit testing и regression testing.
И не о тех ошибках, которые вылезут просто при запуске при попытке вызвать неверный метод.
Какие еще ошибки неправильных типов могут быть, которые пропустят вышеперечисленные методы?
sergeek
lorien
> Или py3k уже позволяет это делать?.
там можно самому написать декоратор из пары строк для простой проверки в рантайме
интересные ссылки по теме:
http://lambda-the-ultimate.org/node/1519
http://ceronman.com/2013/03/12/a-powerful-unused-feature-of-python-function-annotations/
lorien
В большинстве проектов я не пишу тестов. И code review некому делать т.к. часто я сам для себя пишу или я один в проекте работаю.
py.user.next
lorien
В большинстве проектов я не пишу тестов.
и если получается что-то не очень продуманное, то оно оставляется, потому что переделывать долго
eugenk
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. Но то скорее некоторая смесь. Хотя и весьма полезная. Хотелось бы какого-то регулярного изложения.
eugenk
Lexander
В остальном я против, т.к. толку мало (ну не заменит Python Java в корпоративной среде!), а мороки и лишней писанины типа объявления переменных - много.
Плюс стат. типизация помогает разобраться с длинными текстами, а для Питона длинные тексты - моветон.
Вообще-то мне куда более интересно не с чем-то разбираться, а поручить это дело IDE. Ну есть у Вас скажем какой-то злобный класс с парой десятков если не поболее того полей. Вы пишете, что объект “черт с рогами” принадлежит к злобному классу. Потом в программе пишете черт_с_рогами и ставите точку. IDE сама открывает список автокомплита, из которого Вы выбираете нужное поле. Как это может работать без статической типизации, хотя бы опциональной - хоть убейте не понимаю. Во всяком случае работаю сейчас на PyCharm 2.7.3 самой последней сборки и с питоном и с яваскриптом. Оно пытается делать автокомплит, но выходит это более чем хреново. И ведь это жуткий монстр, брендового производителя, превосходящий по качеству VisualStudio, а не фигня какая-то ! Там даже вероятностные методы анализа и самообучение используются, чтобы определить неопределенный тип, как я понял из наблюдений ! А результат все равно как говорится, оставляет желать… Так что типизация, хотя бы на уровне аннотаций, по-моему штука абсолютно необходимая. Да, чтобы скажем посчитать корни квадратного уравнения, это излишне. Но когда проект достигает хотя бы нескольких тысяч строк, без нее по-моему просто не обойтись.
ring0za
Странно вообще видеть такие посты на форуме, я честно говоря рад даже что нет статической типизации.
wbt
война - фигня, главное - маневры

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

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

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

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

А вы говорите ide. На ide надейся, она тебе и нагородит. Для логики и для web, где чертить не надо, лучше самому понимать и помнить, что происходит,
ring0za
А я на sublime - text2 перешел, мне очень нравятся возможности по обработке текста в целом, чего стоит только ctrl+d, ctrl+k…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB