LINUX.ORG.RU

Питонячьи радости

 ,


0

4

Отступы, блин

Был у меня код вида:

for blah-blah-blah :
    # какой-то код
    if что-то :
         # код
    else:
        # ещё код

Код скопипастил из одного места программы в другой. При этом не заметил как отступы нарушились. Ну вы поняли, да? Стало:

for blah-blah-blah :
    # какой-то код
    if что-то :
         # какой-то код
else:
      # ещё код

И вот это мне стоило довольно большого количества потеряного времени. Условие else: стало относиться не к if, а к циклу for. Учитывая, что тело цикла было достаточно длинным, как-то не бросалось в глаза, что else уехал не туда. Мать-перемать, но код после этого даже почти нормально работал.

Еще уже мелочь относительная, но все же, чего-то не подумав захотел поработать с гугл драйвом прямо из своего кода и недолго думая сделал pip install --upgrade google-api-python-client - и это разрушило всё. Благо, что от юзера, а не рута, вылечилось сносом .local и повторной накаткой некоторых модулей

★★★★★

Последнее исправление: anonymous_incognito (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

Наверняка кто-то уже сделал препроцессор для питона где границы блоков кода можно обрамлять явно{}илиthenendчё мучиться =)

В Питоне есть возможность сделать штатный препроцессор :D. Видел как-то давно такую тему.

Virtuos86 ★★★★★
()

Пробелы вместо скобок для блоков и отсутствие типов – это как пописать в штаны на морозе чтобы согреться. В моменте станет теплее, но через некоторое время п$$$$ц.

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

https://en.wikipedia.org/wiki/Brian_Kernighan#Books_and_reports

дело инструментализации профессиональной деятельности

ваще в целом мы пока в каменном веке;

единицы достигают уровня ремесленников;

единицы из единиц …

поэтому ща vscode >vim >emacs :(

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

Так они и тупые, херли.

95% населения объективно идиоты.

Это видно и по политике вон, и по массовым психозам разным, и так далее. Херли, среди программистов чтоли не так? Особенно с учетом того что щас чуть не каждый - это макака с улицы, который пришел в эту профессию чисто за баблом, и ни о каком CS не знает и так далее

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

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Луа родилась оглядываясь на Модулу-два. Как и множество других языков. В то время вариантов типа then end было наверное больше чем типа { } Но в целом это мелоч, можно в модуле сделать { } и в си подобных then end и ничего не поменяется, останется лишь суть. А так паскаль батька обоих. (вроде)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

В питоне then уже есть, а вот end не завезли. Лучше бы наоборот. Хотя многих от ендов аж трясёт, будут скобки считать или мерить отступы линейкой, что угодно кроме ендов.

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

g(in for context)s/else:/whenLOOPend:/

можно патчить свой питон (ололоОпасносте)

важно чувство меры

ветвь спокойного завершения цикла изредка бывает удобна

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

На километры говнокода это не рассчитано.

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

How many libraries are in Python?
There are over 137,000 Python libraries available today.

ссылка

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

Я в свое время от этих граблей мучился ад как, в т.ч. когда ревьюил чужой код. От этих граблей не спасает даже платный PyCharm.

Python - не предназначен для реальной разработки чего-то сложного. Это учебный язык. Те кто его используют для чего-то еще - делают это по глупости.

ниасилил короче, понял

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

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

Иди гуляй

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

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

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

Это видно и по политике вон, и по массовым психозам разным, и так далее. Херли, среди программистов чтоли не так? Особенно с учетом того что щас чуть не каждый - это макака с улицы, который пришел в эту профессию чисто за баблом, и ни о каком CS не знает и так далее

Мне кажется, это ещё и связано с тем, чтобы устроить некую сегрегацию программистов, которые привыкли пользоваться нормальными ЯП (C#, Java, Scala, Groovy) и новомодними с каким-то извратным мерзким синтаксисом, который как бы издевается над кодером (Golang, Python, etc.). Чтобы программистам старой школы было неприятно попадать в новые проекты с поехавшими ЯП.

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

Учитывая, что тело цикла было достаточно длинным

Если не придерживаться практики, что тело цикла/if-else должно помещаться на один экран редактора, то рано или поздно в любом языке какие-нибудь грабли да всплывут

Хотя да, в языках со скобками вероятность будет немного меньше

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

Это не «тривиальные проблемы», это говно которое возникает повсюду и постоянно, и портит жизнь даже опытным программистам, а насчет серьезных проектов - давай, деанонимизируйся и показывай че у тебя там за - серьезные проекты(вебмакакинг на джанге поди). Я вот как бы даже не скрываю - автоматизация ипотечного кредитования в США у меня была.

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

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

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

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

Но IMHO его синтаксис какой-то своеобразный (неприятный).

там всего есть предостаточно

Согласен, и все наработки можно использовать из .NET языков:

https://docs.microsoft.com/en-us/powershell/scripting/developer/hosting/adding-and-invoking-commands?view=powershell-7.1

sanyo1234
()

Учитывая, что тело цикла было достаточно длинным, как-то не бросалось в глаза

Портянки, да еще с вложенным циклом, надо декомпозировать. А для сложной логики писать тесты.

недолго думая сделал pip install

Для экспериментов надо делать как-то так

$ python -m venv new_env
$ . ./new_env/bin/activate
$ (new_env) pip install <anything>

...

$ (new_env) deactivate
$ rm -rf new_env
qaqa ★★
()
Ответ на: комментарий от ugoday

Это не (настоящее) программирование.

А программирование на Golang - это настоящее программирование? LOL IMHO это многозадачный Bash с сиподобным, но сильно извращённым синтаксисом. Синтаксис Bash конечно тоже не блещет своей «идеальностью». Но Golang, вероятно, решил, его даже перещеголять.

Делают ли на Golang что-то полезное? Да, конечно. K8S и много других более простых инструментов.

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

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от caryoscelus

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

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

Какие в 2023 году преимущества у Golang над JVM и .NET языками, даже если представить, что они как будто бы эквивалентны по набору своих языковых конструкций (операторов, и т.п., т.е. не использовать более навороченные конструкции настоящих ЯП) ?

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

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

Хорошая платформа (и следование её практикам) перекрывает недостатки плохого языка.

Есть более совершенные, чем JVM и .NET ?

Говорят (лично не проверял), даже PHP весьма неплох в своей области.

IMHO если сравнивать по синтаксису, то PHP - просто божественный ЯП по сравнению с недоразумениями типа Python и Golang.

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

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

ugoday ★★★★★
()