LINUX.ORG.RU

Как вы вообще разрабатываете на питоне?

 


0

3

Здравствуйте

Допустим, имеем такую структуру проекта

module1.py
pkg1/
    script.py

Сдержимое script.py:

import module1

Находясь в директории проекта выполняем:

$ python3 pkg1/script.py
Traceback (most recent call last):
  File "pkg1/script.py", line 1, in <module>
    import mylib
ImportError: No module named mylib

Я, конечно, извиняюсь за глупый вопрос, но как вообще писать код на этом?

★★★★★
Ответ на: комментарий от anonymous

Какие понты? ide мне подсвечивает что я пытаюсь вызвать несуществующий метод или передаю/возвращаю неправильный тип. Что и требовалось.

pawnhearts ★★★★★
()
Ответ на: комментарий от grem

Про компиляцию речь шла не о питоне.

тогда твой выпиндрёж выглядит приблизительно так: у дяди и машины нет, а он соседу говорит про его феррари: «тюю, бугати лучще ферарией».

Чтобы не парить мозг динамической типизацией достаточно осознать,

что динамическая типизация для однострочных скриптов, которые никто никогда рефакторить не будет. лучше переписать с нуля Лол :-)

Никто ж не парит мозг используя шаблоны.

чего там парить то? что не ясно с шаблонами? кроме того шаблоны быстры как фотоны. код на шаблонах уже отработал и получил бабосы, а пистон ещё спит. да и вообще, что ты к спп прицепился? в окамле например type inference есть (если ты конечно знаешь что это такое). кода не больше чем в пистоне, а статическая типизация есть. всё потому что пистонисты неосиляторы карринга и монад? Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

Нормальные люди пишут код и тесты, в том числе, обрабатывающие нестандартные ситуации. Или ты при вычислении, например, логарифма не будешь обрабатывать ситуацию, если на вход приходит неположенное число? Проверишь работу кода только на положительных значениях и успокоишься на этом?

Или в полях ввода не ограничиваешь ввод допустимыми значениями?

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

grem ★★★★★
()
Ответ на: комментарий от peregrine

какой-нибудь проверялкой

mypy это и есть «проверялка». И ide знает о типах и будет тебе подсвечивать если ты не тот тип куда-то передаешь. А enforce будет вызывать экспешн, если типы не те. Можно завернуть в него тесты и они будут падать из-за неправильного типа.

автоматических инструментов

Просто аннотации типов не обязательные и есть много готового кода, где их прописывать было бы лень. Автоматические тулзы тут просто помогают.

pawnhearts ★★★★★
()
Ответ на: комментарий от anonymous

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

Остальные твои домыслы - твои личные проблемы. Не забывай почаще тянуть лыбу.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от anonymous

Калбеки неудобно добавлять, солгасен. Но, насколько я могу судить, через калбеки в питоне функции редко передают. Обычно либа предлагает наследоваться от ее внутреннего класса и определить/переопределить методы

Для сложных случаев - когда несколько вложенных map/reduce - и слава богу что нет многострочных лямбд. Такая запить абсолютно write-only для невундеркинда

makoven ★★★★★
() автор топика
Ответ на: комментарий от grem

Мыш, ты следи, кому отвечаешь. Коментарием промахнулсо.

anonymous
()
Ответ на: комментарий от grem

если на вход приходит неположенное число

пфффффф..

template <typename T>
T my_log(std::enable_if <std::is_unsigned <T>::value, T> ::type number)
{
...
}

anonymous
()
Ответ на: комментарий от anonymous

кода не больше чем в пистоне, а статическая типизация есть

А как в окамле со сложными случаями, когда тип - это шаблонный тип, специфицируемый другими шаблонами (или как оно там правильно называется). В общем с тем, от чего в Rust и Boost начинает рябить в глазах

makoven ★★★★★
() автор топика
Ответ на: комментарий от anonymous

но никто не знает какая именно строка прилетит в модуль, оперирующий числами. хоть и тесты для модуля написали и даже отрабатывают все, да.

Я из твоего бреда ничего не понял. Покажи мне реально существующий модуль оперирующий числами, который от строки не выкинет исключение.

anonymous
()
Ответ на: комментарий от anonymous

И это никак не противоречит фразе

Нормальные люди пишут код и тесты, в том числе, обрабатывающие нестандартные ситуации

grem ★★★★★
()
Ответ на: комментарий от anonymous

Отступы реально вредят. Из-за них питон такой убогий, хоть и динамический. Мог бы быть могучим как лисп, а по факту туп как бейсик, да еще и тормоз. Удивительно, как столь плохой инструмент стал таким популярным. Макаки инстинктивно тянутся к какашкам вероятно. Причуды эволюции.

Найди себе парня и ему в плечо ной.

anonymous
()
Ответ на: комментарий от peregrine

А потом в рантайме полно ошибок, из-за того что быдлокодер попутал объекты и дергает несуществующие методы, но узнаем мы об этом когда код будет работать, после внедрения.

Конечно, вместо нормальной проверки компилятором/какой-нибудь проверялкой, которая шла бы вместе с ЯП надо в тестах писать проверку типов.

Ты дурак или просто жопой юлишь? Если ты будешь дёргать несуществующие методы, у тебя провалятся к херам любые тесты, никаких отдельных проверок типов для этого писать не надо.

anonymous
()
Ответ на: комментарий от grem

А почему их не префиксят? По идее префикс и есть указание на принадлежность к той или иной либе. Неймспейс же в полной мере — можно рассматривать только как скоп и смешивание скопов.

deep-purple ★★★★★
()
Ответ на: комментарий от anonymous

Я просто считаю людей дураками, если они не доказали обратного. Так надежнее и сейвовее, когда ты не в ком не уверен. Сколько раз во всяких программах на питоне (заметь, их писал не я и не мои кореша) я наталкивался на идиотские краши, т.к. тесты тупо ленятся писать, те же авторы SoundConverter видимо о них не слышали, т.к. четыре года назад он крашился с дурацкой ошибкой при некоторых настройках.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от ggrn

А они перестали его использовать кроме как для моделек и заместо калькулятора/некоторого аналога matlab-а?

peregrine ★★★★★
()
Ответ на: комментарий от grem

Соглашусь что проверять нужно все. Но не соглашусь что проверки нужны в самой числодробилке. Проверять нужно на входе публичного апи. Это конечно же актуально только для релиза, в дебаге лепим везде.

deep-purple ★★★★★
()
Ответ на: комментарий от peregrine

Я просто считаю людей дураками, если они не доказали обратного. Так надежнее и сейвовее, когда ты не в ком не уверен. Сколько раз во всяких программах на питоне (заметь, их писал не я и не мои кореша) я наталкивался на идиотские краши, т.к. тесты тупо ленятся писать, те же авторы SoundConverter видимо о них не слышали, т.к. четыре года назад он крашился с дурацкой ошибкой при некоторых настройках.

Ну допустим. И какой язык ты предлагаешь промышленно использовать? Тот, где сегментейшн фолты или тот, где нулпойнтерексепшены?

anonymous
()
Ответ на: комментарий от anonymous

C# для прикладухи ну или Java, если время старта программы не важно, а важна лишь скорость работы после старта, вместе с .Net-ом, но Linux немного в пролете, хотя уже не так сильно как раньше, а на настоящем промышленном использовании свои языки и стандарты. Гугли про микроконтроллеры, если тебе это интересно, хотя там тоже не всё радужно, но из-за маленького рынка и закрытых продуктов, над которыми трудятся полтора программиста. Для системщины нет пока ничего идеального, именно от этого плодятся всякие расты, го и иже с ними.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от anonymous

Не в этом дело. Не пойму что страшного в сегфолтах и нуллптрэксепшнах? Если оно вылезло в релиз — дело было не в бобине.

deep-purple ★★★★★
()
Ответ на: комментарий от peregrine

C# для прикладухи ну или Java, если время старта программы не важно, а важна лишь скорость работы после старта, вместе с .Net-ом, но Linux немного в пролете, хотя уже не так сильно как раньше,

То есть нулпойнтерексепшены. Не вижу профита перед питоном.

на настоящем промышленном использовании свои языки и стандарты.

Увы, чьи-то секретные знания меня не впечатляют. Давай примеры.

Гугли про микроконтроллеры, если тебе это интересно, хотя там тоже не всё радужно, но из-за маленького рынка и закрытых продуктов, над которыми трудятся полтора программиста.

По моему опыту там вообще всё отвратно и через жопу. Чтобы не быть голословным: google://toyota firmware global variables.

anonymous
()
Ответ на: комментарий от anonymous

Пиши, сцуко, тесты и лови его в тестах.

следи за руками. Станислав (от статик) пишет тип прямо в коде, описывает его поведение и не имеет проблем. А Денис (от дайнемик) - пишет тесты для типов которых нет, пользуясь при этом какими то фреймворками для тестов, библиотеками и плагинами для его ide и прочей хиромантией.

Вопрос: нахрена козе баян? Как по мне Станислав - молодец. А Денис - сам себе злой буратино. Такие дела.

anonymous
()
Ответ на: комментарий от deep-purple

Не в этом дело. Не пойму что страшного в сегфолтах и нуллптрэксепшнах? Если оно вылезло в релиз — дело было не в бобине.

Ничего. Я пытаюсь донести, что они от ошибок типов в питоне ничем не отличаются.

anonymous
()
Ответ на: комментарий от anonymous

следи за руками.

Чего тут следить, так сразу видно где ты пытаешься меня наебать.

не имеет проблем.

Не бывает такого, расстрелять Славу из говномёта.

пишет тесты для типов которых нет,

Сам понял, что написал?

anonymous
()
Ответ на: комментарий от anonymous

То есть нулпойнтерексепшены. Не вижу профита перед питоном.

эти эксепшоны ещё надо кинуть, и да, если просто помнить про их существование, то они не такая проблема

Увы, чьи-то секретные знания меня не впечатляют. Давай примеры.

IEC 61131-3, конечно если железку ты сам делаешь, то всё гораздо веселее

По моему опыту там вообще всё отвратно и через жопу.

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

peregrine ★★★★★
()
Ответ на: комментарий от anonymous

Пиши, сцуко, тесты и лови его в тестах.

Свидетель 100% покрытия? К тому же пистонщики любят забивать на тесты большой и толстый. У них тулзы для тестирования неудобные, да и муторно это. Макаки любят шоб быстро, а с дотошными тестами скорость разработки ничуть не выше, чем на статике.

anonymous
()
Ответ на: комментарий от peregrine

эти эксепшоны ещё надо кинуть

Нет, они кидаются в рантайме когда погромист косячит.

IEC 61131-3

Посмотрю, спасибо.

То потому, что там не программисты работают, а вообще левые к IT люди.

Да

anonymous
()
Ответ на: комментарий от anonymous

Не бывает такого

бывает

Сам понял, что написал?

конечно. просто у тебя мозги уровня ниже плинтуса. не поймёшь Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

бывает

Нет, не бывает, у него в продекшене overflow и ракета превратилась в подводную лодку.

конечно.

Это хорошо, значит дядя доктор ещё может помочь.

anonymous
()
Ответ на: комментарий от makoven

А как в окамле со сложными случаями

Сложные случаи редки, а в обычном коде все выводится на ура. Аннотации очень редко нужны. В расте все печальней как по мне. Но раст низкоуровневый, там пляски с управлением памятью привносят основной угар.

anonymous
()
Ответ на: комментарий от anonymous

Свидетель 100% покрытия?

Нет. Я втираю людям, что ошибки типов в продакшене не от питона, а от кривых рук.

К тому же пистонщики любят забивать на тесты большой и толстый. У них тулзы для тестирования неудобные, да и муторно это. Макаки любят шоб быстро, а с дотошными тестами скорость разработки ничуть не выше, чем на статике.

Скорость разработки быстрее - конпелять и запускать по полчаса не надо.

anonymous
()
Ответ на: комментарий от pawnhearts

Проблемы начинаются когда динамический кот делает что-то не то в зависимости от фазы луны. А тесты внезапно это не ловят. В статике у тебя хоть минимальные гарантии от тупых ошибок, не говоря о том, что исследовать статический код на порядок проще.

anonymous
()
Ответ на: комментарий от anonymous

Проблемы начинаются когда динамический кот делает что-то не то в зависимости от фазы луны.

Мы тут не о котах, а о коде. Динамический код не зависит от фазы луны. Если тебе так кажется - RTFM.

А тесты внезапно это не ловят. В статике у тебя хоть минимальные гарантии от тупых ошибок

Нет таких ошибок, от которых тебя спасёт статика, но котрые не поймают минимальные тесты.

что исследовать статический код на порядок проще.

Нет. Исследовать код помогают названия переменных, а не их типы.

anonymous
()
Ответ на: комментарий от anonymous

Нет, они кидаются в рантайме когда погромист косячит.

Ну не косячь так, ХЗ как в java но в C# указатели вообще моветон и нужны крайне редко. NullReferenceException получается если ты указатель NULL разыменовал. Да, это можно легко сделать, но студия обычно ругается на такое.

peregrine ★★★★★
()
Ответ на: комментарий от deep-purple

Да, о проверке внутри вычисляющей функции я погорячился.

А «дикие и симпатичные» числодробилки вещь довольно прикольная: часто всё что можно вычислить заранее - вычисляется и жёстко вбивается, даже если это элементы матриц, лишь бы не тратиться на лишние повторяющиеся вычисления и вызовы переменных.

grem ★★★★★
()
Ответ на: комментарий от pawnhearts

Проблемы с типами это небольшой класс ошибок и весьма редкий

У тебя не будет проблем с типами если не будет типов Лол :-) .jpg

что можно знать о типах пиша на пистоне?

anonymous
()

Кстати, мне не очень понятно, а что собственно дает питонщикам эта динамичность? Никаких убер-мета фич там нет. Весь тот унылый трешак, что они пишут, можно хоть на го изобразить почти без потери выразительности, не говоря уж о жабе или сисярпе.

anonymous
()
Ответ на: комментарий от peregrine

На питоне проще косячить, он к этому предрасполагает в большей мере.

Ну вот что на это можно ответить?

Нет.

anonymous
()
Ответ на: комментарий от anonymous

что можно знать о типах пиша на пистоне?

Явно больше, чем пиша на ЛОРе.

anonymous
()
Ответ на: комментарий от anonymous

Исследовать код помогают названия переменных

x = foo(bar) - счастливого обезжучивания!

int x = foo(bar)

Тебе легче стало? Сидишь, выёживаешься чего-то.

anonymous
()
Ответ на: комментарий от grem

Честно говоря — в своих собственных проектах обхожусь вообще без каких-либо тестов, «тестирую» в момент написания, вернее формирую только валидационные «switch if else try catch goto» если требуется.

Я изначально стараюсь разложить все по полочкам, собрать в кучу однообразное, минимизировать копипасту. И не гнушаюсь переписать пол приложения, если где-то что-то архитектурно не предусмотрел заранее.

Кому-то покажется удивительным, но и без тестов можно писать так, чтобы не упало.

Общепринятая практика как должен выглядеть код/проект и его окружение на «галере» сложилась по необходимости защиты от тупизма «гребцов» и текучки кадров.

deep-purple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.