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

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

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

Теперь объясняй свой пук в лужу, где ты противопоставляешь «динамике» вывод типов

Вот ты тугой. Я намекал на SML, сделанный примерно в то же время и с теми же целями, что и пузон, но только нормальным ученым, а не жывотным с помойки.

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

Как спорить с анонимом, который довольно пренебрежительно высказывается о создателях ЯП, на которых пишет весь мир? Ты же упорыш обыкновеникус. Пришел, насрал и побежал дальше радостный. Радость это хорошо, радуйся, я не против.

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

Какой гадкий анонимус, не надрачивает на твои иконы.

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

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

АХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХАХ

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

это просто «вставка» содержимого одного файла в другой

Что это? Тут один модуль.

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

Это делается на стадии написания модуля. man static

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Типы тоже не без недостатков

С одной стороны у нас Rust/C++/Java/C#, в которых декларация типов очень быстро превращается в обощенный ад, глядя на который начинает болеть голова

С другой стороны Go, в котором только примитивные типы. За что его чморят. Ведь без дженериков приходится копипастить или заниматься саморефлексией

С третьей (астральной) стороны Haskell/Ocaml. В них обе вышеописанные проблемы, говорят, решены, но сами языки почему-то не проявлены в физический мир

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

А переменные начинать с $ или ; в конце строки это нормально

Нормально, т.к. $ даёт отдельный неймспейс для переменных, а ; позволяет группировать в одну строку.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

; позволяет группировать в одну строку

Но зачем?

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

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

Такая запить абсолютно write-only для невундеркинда

Да уж, многоэтажные list/hash comprehantions они конечно намного читаемее, ага.

no-such-file ★★★★★
()
Ответ на: комментарий от makoven

И что должен доказать этот говнокод? Что авторы llvm не осилили зарефакторить циклы в отдельные функции (тем более что в крестах их можно инлайнить)?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

И что должен доказать этот говнокод?

Что в некоторых алгоритмах и 4 и 5 вложений вполне оправданы

Некоторые разработчики, вместо такой лесенки стыдливо дописывают }}}} на последней строчке. А иногда даже )}}}}

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

Но зачем?

За тем, что это может быть оправдано по-смыслу.

Пример

$a = 0; $b = 1; $c = 2; $do = true;
do {
    // Используем $a,$b,$c
    // например
    if ( $a > 0 ) { $c = $a + $b; continue; }
    ...
} while( $do )

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Первая строка - ПХПпроблемы. В нормальных языках есть деструктуринг.

Строка с if - ну такое. Торчащее справа continue воспринимается скорее как комент, а не как оператор. При чтении легко пропустить

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

В нормальных языках есть деструктуринг

Который используется как костыль вместо внятного объявления? Ну ок.

a, b, c, d = 0, 1, 2, True
Охренеть как понятно, что 2 кладётся в c. Это ни разу не эквивалентная смысловая замена.

Собственно в этом весь python way - не хотим как у всех, хотим чесать правое ухо левой пяткой.

no-such-file ★★★★★
()
Ответ на: комментарий от makoven

в некоторых алгоритмах и 4 и 5 вложений вполне оправданы

Это не значит, что их нужно лепить в одну функцию.

no-such-file ★★★★★
()
Ответ на: комментарий от makoven

Типы тоже не без недостатков

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

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

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

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

рынок - сроки - зарплаты - окупаемость

anonymous
()

Учись пользоваться поиском. Первая строка в поисковом запросе «python импорт моделей путь». https://pythonworld.ru/osnovy/rabota-s-modulyami-sozdanie-podklyuchenie-instr...

Ответ с сайта: Куда поместить модуль? Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).

Вообще советую пролистать этот сайт там много полезного. https://pythonworld.ru/karta-sajta

Еще можно сделать инстралируемые, модули документация тут. https://wiki.python.org/moin/CheeseShopTutorial

Можешь посмотреть что пишут люди на github. Например мой код, не идеальный но много интересного можно найти. https://github.com/reef425

reef425
()
Ответ на: комментарий от no-such-file

а ; позволяет группировать в одну строку.

(1x$_) !~ /^1?$|^(11+?)\1+$/ && print "$_ is prime"

Как читабельно и удобно!

a, b, c, d = 0, 1, 2, True

Охренеть как понятно, что 2 кладётся в c.

А куда оно по твоей логике должно «класться» ? Вполне логичное поведение.

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

Когда (т.е. почти всегда) переменные длиннее одного символа, обе записи в одну строку сосут

makoven ★★★★★
() автор топика

Тоже еле сдерживал отвращение когда приходилось с питонячим кодом дело иметь. Как ЭТО стало настольо распространённым что проникло во все дистрибутивы и т.д.?

Так что сейчас, после того как Go набрал силу, корявому бидону с GIL место только на свалке.

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

после того как Go набрал силу

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

Так и тут: в любой непонятной ситуации порождай процессы, переключай горутины, сериализуй в каналы, даже если всё это в твоем фибоначи-микросервисе нафиг не упало

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

Как ЭТО стало настольо распространённым

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

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

Вспоминается nodejs. Даже когда пишешь на нем простенький синхронный скрипт

А зачем ты это делаешь? Голоса в голове приказывают? «Makoven, возьми с полки микроскоп и забей уже этот саморез!» Как то так?

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

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

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

Расскажи мне про дебаг в голанг ? Про то что у нас 100% покрытие юнит-тестами нам дебаг не нужен рассказывать не надо. Как там поживает delve ? Или используете деревянный gdb ? А может дебаг в платной IDE GoLand ?

Пока самый приятный дебаг для меня в Python (используюя ipdb) и в Elixir (iex)

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

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

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

Путина с 80%?)

В Казахстане в 2015 году Нурсултан Назарбаев набрал 98 %...

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

Расскажи мне про дебаг

Ты девочка штоле? Настоящие джедаи дебажат принтами!

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

Как читабельно и удобно!

Так получается потому что у тебя руки из жопы. Наверное поэтому ты любишь питон, где у рукожопов отобрали {} и ; чтобы они не поранились.

А куда оно по твоей логике должно «класться» ?

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

no-such-file ★★★★★
()
Ответ на: комментарий от makoven

обе записи в одну строку сосут

Сосёт только пистон, т.к. в нормальном языке меня не заставляют всё писать в одну строку, или в несколько строк и форматировать только строго определённым образом. Поэтому я могу даже так

$a = // Parm 1
    1; 
$b = // Parm 2
    2;
$c = // Parm 3
    some_long_and_unreadable_exp() +
    other_long_exp();

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

В php тоже есть деструктинг

Есть, только ни одному адекватному человеку не придёт в голову использовать его для присваивания переменных, как в питоне. Вообще-то и в питоне оно не для этого нужно, просто лепят костыли на ровном месте, лишь бы не признавать, что убрать {} и ; было ошибкой. Да ещё рассказывают всем окружающим, что это гениальное решение и что так и было задумано, а все последствия просчитаны (нет).

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Так получается потому что у тебя руки из жопы

Тут подробнее.

. Наверное поэтому ты любишь питон, где у рукожопов отобрали {} и ; чтобы они не поранились.

Почему рукожопы то?

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

А что там считать? если ты не можешь сопоставить написанное, у меня для тебя плохие новости.

ggrn ★★★★★
()
Ответ на: комментарий от no-such-file

Постой, получается, что в том же хаскеле это тоже было великой ошибкой? Просто там тоже отступы, но таких вопросов там почем-то не возникает.

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

Так уж вышло, что маленьких скриптов приходится писать не меньше чем «проектов». В этой нише питон рулит. Изучить js, python и еще go памяти и усердия не хватит. Поэтому джанга

Кстати, а что там сейчас у go в качестве «веб-фреймворка под ключ», a'la Django/Flask? На биржах вроде еще не определились с фаворитом

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

Самая большая боль, это распространение софта под маздай, особенно если заказчик хочет .exe, тут и начинается cx_Freeze, особая боль если либа с гуем.

AUX ★★★★
()
Ответ на: комментарий от no-such-file

Да ещё рассказывают всем окружающим, что это гениальное решение и что так и было задумано

Так и было, ведь питон вылупился из учебного языка, который по сути исполняемый псевдокод. Ну кто же знал, что макакии налетят толпой на этот бейсик. Даже Гвидон наверно не думал, что так выйдет.fita farmacia

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

Почему рукожопы то?

Я не знаю почему когда тебе дают универсальный инструмент, на выходе у тебя получается что-то вроде &$*%*%^_)(&@Q. Наверное потому что от питона атрофировался мозг и ты не в состоянии сам себя контролировать. Удивляюсь как ты ещё не спился, ведь алкоголь свободно доступен.

если ты не можешь сопоставить написанное

Я то могу. Вопрос, зачем?

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Просто там тоже отступы, но таких вопросов там почем-то не возникает

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

no-such-file ★★★★★
()
Ответ на: комментарий от makoven

Не знаю о каком ты языке. Но как минимум в Rust, Swift и Kotlin - это вывод типов (только в Rust ключевое слово другое).

vlad9486
()
Ответ на: комментарий от no-such-file

Какой же ты норкоман, это простой пример «удобного, читаемого» однострочного кода.

ggrn ★★★★★
()

С 3 страницы начался тред нытиков, каждый второй знает как лучше, но кишка тонка создать решение

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

Почему рукожопы то?

Потому что анальные ограничения синтаксиса. Питон априори считает кодера рукожопом, пичалька.

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