LINUX.ORG.RU
ФорумTalks

Плохой Питон

 ,


0

5

по мотивам предыдущего треда.

Вот имеется функция.

def foo(bla):
   if bla > 10 and bla < 20:
        raise ValueError('Некорректно bla: какая-то херь!')

По данному коду:

  1. мы железно знаем что ошибку допустил код вызывающий нас
  2. поэтому правильно бросать исключение указывающее на строку нас вызывающую, а не на нас
  3. как бросить такое исключение?

хочу как в человеческом языке оператор

croak

PS: так же крайне удручает отсутствие полноценных лямбда-функций в этом говноязыке. Блин, как вы живёте без лямбд-то? только не надо мне тыкать в лямбда-оператор, я функцию хочу!

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

Я тебя умоляю.

Когда ORM используют как аналог ODBC - да, зло.

Когда используют для описания моделей данных - это благо.
Особенно с адекватными SQL дополнениями.

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

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

К этому все приходят. Если задача легко укладывается в ОРМ, значит там вообще реляционная СУБД не нужна. Такое вот эмпирическое наблюдение.

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

такое же УГ

ты это сказал на основе своего богатого опыта

соответственно 2.7, 3.4, 3.6

2.7 - для ретроградов которые уже много лет переехать не могут

3.4 ? Пруфы где оно из коробки и не требуется упоротой зависимостью и при этом не является последней версией в дистрибутиве.

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

и как ты этот бред пьяного токсяна прикрутил к адекватности программиста ?

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

а то ещё и с ручным приведением данных к нужным типам.

приведение данных к типам - бага дизайна Python

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

ты это сказал на основе своего богатого опыта

я посмотрел на сайте noze примеры его логов: никакой читаемости лучшей чем у pytest нет, в коде noze те же assert'ы.

чем noze лучше pytest? нигде не описано.

можешь своими словами сказать?

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

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

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

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

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

2.7 - для ретроградов которые уже много лет переехать не могут

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

РУЧНОМУ

apt rdepends python2.7|wc -l
294
rsync ★★
() автор топика
Ответ на: комментарий от pawnhearts

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

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

нативным асинхроном

нативный асинхрон, это который разный в версиях 3.5, 3.6, 3.7, 3.8?

да директивы async/await - одинаковые, а вот их запуск

где-то asyncio.run есть, где-то его нет. какие-то таски напилили API asyncio в трех минорных релизах поменялся.

ППЦ

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

Это выглядит гораздо хуже чем родной запрос на SQL, — языке который для этого и разработан. Разве что ты не умеешь в SQL. В последнее время таких ОРМшиков понаразвелось.

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

тестов в питоне нет

куда же они делись

сайте noze

nose, лично тебе сгенерирует и в html и в pdf, лично мне такого оверкилла не надо, достаточно имени, что ожидаю и что получил

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

а что такое нативный тогда?

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

ненативный = сторонней/нестандартной либой

гринтреды - ненативный асинхрон были для питона. async/await+asyncio - нативный

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

2.5 я бы, конечно, не хотел, там приходилось with из будущего ипортировать, но 2.6 в самый раз. И это не ретроградство. Просто хипстота актуальный питон конкретно обосрала.

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

Будь у меня синдром утёнка, я бы не принимал и не учил новые языки.

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

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

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

Оно же в сущности ничем не лучше электона, а по-моему даже гораздо хуже.

Ты действительно считаешь, что делать гуй полностью на html+css+js на движке Chromium это лучше, чем просто дернуть из питона нативный Gtk+ или Qt?

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

Эскобар. Но у «html+css+js» есть ключевое преимущественно — мгновенная и практически бескостыльная переносимость. Ну и V8 быстрый (не говоря уже про остальное), а питон медленный.

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

Он всё равно жрёт больше памяти, чем 32-х битный эклипс, в нём отсутствует клиент баз данных и UML редактор с предпросмотром.
Для справки: я умудряюсь кодить в электричке на букопланшете на старом атоме вместо процессора и 2 Гб памяти. Там даже эдж тормозит. Эклипс - почти нет.

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

Ну и V8 быстрый (не говоря уже про остальное), а питон медленный.

Только Electron все равно тормозит, а на питоне гуй никто и не рендерит. Сам гуй-то написан на C или C++, питон только расставляет виджеты по местам.

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

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

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

когда этот инструмент в редких случаях выдаёт не то, что нужно, то можно использовать тот самый стектрейс, однако разбирательство приводит к тому, что код писан теми самыми ламерами, понабежавшими из Java/Python.

Когда вместо коллстека тебе пришлёт этот огрызок, будет уже поздно что-то менять. Такова судьба ламеров от Perl.

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

Вот уж не скажу, я уже как-то на автомате перенастраивал всё, если старый конфиг не удавалось переносить. Я эклипс где-то года с 2011 юзал. Но тормозило и глючило там стабильно масштабирование и перетаскивание внутренних окон редактора, с редактирование всегда был порядок (кроме прикола с инфинит лупом при переходе на гтк3 несколько лет назад).

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

У электрона уже появились нативно реализованные виджеты и не нужно рисовать все на html+css и наворачивать js на каждый чих?

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

Это ретроградство. Например, работа с GIL сильно улучшилась в 3.2 https://mail.python.org/pipermail/python-dev/2009-October/093321.html

А если есть время, то обязательно нужно смотреть видео http://www.dabeaz.com/GIL/

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

У меня есть очень эффективный способ улучшить «работу с GIL», могу поделиться. Если придерживаться моей методики, то гил просто няша. Секрет прост, — не юзать питон.

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

Ну в жс вроде просто впендюрили в Array, или как оно там называется. Хотя я могу ошибаться. Фокус в том, что join должен работать с любым итератором, в том числе самописным.

Не реализовывать же его для каждого класса.

Если уж сильно так припекает, то почему бы и нет? Можно и питон в жс превратить:

class list(list):
    map = lambda self, fn: list(map(fn, self))
    filter = lambda self, fn: list(filter(fn, self))
    join = lambda self, d: d.join(map(str, self))


print(list(range(5)).map(lambda x: x * 2)
                    .filter(lambda x: 2 < x < 8)
                    .map(lambda x: x * x).join('-'))
16-36
vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

class list(list):

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

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

Это же не как надо, а как можно, если сильно захотелось.

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

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

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