После полутора лет разработки представлен значительный релиз языка программирования Python 3.8. Корректирующие обновления для ветки Python 3.8 планируется выпускать в течение 18 месяцев. Критические уязвимости будут исправляться 5 лет до октября 2024 года. Корректирующие обновления для ветки 3.8 планируется выпускать раз в два месяца, на декабрь намечен первый корректирующий релиз Python 3.8.1...Подробнее: https://www.opennet.me/opennews/art.shtml?num=51676
Как там GIL поживает, всё ещё достовляет головную боль питонистам?
По крайне мере не всем разу, а по одному...
Раньше через каждые 100 инструкций, теперь по таймеру...
У тех у кого от джила боль не пользуются питоном. Либо это особые ценители поедания кактусов.
Какую головную боль? Питон не для этого сделан. Все бы вам гвозди микроскопом забивать.Кому сильно горит - тот давно юзает multiprocessing.
Они наверняка на другом языке ловят сегфолты (зато быстро) поэтому сидят на пистоне и ноют.
Сегфолты скорее редкость на других языках, а вот GIL своей тенью настигает тебя почти всегда.
Впрочем хорошо бы понять, что там с выполнением вызовов C API функций в ThreadPool. Это тоже доставляет ряд проблем начинающим программистам. Как-то ни там не тут.
GIL - одно из основных ограничений языка, учитываемых при его выборе. В тех задачах, для которых он критичен, разумные люди используют другие языки, а проблемы неразумных шерифа не интересуют.
На Python написали EVE Online - лучшая игра в своем жанре. Да stackless, но все python!
Враки, далеко не все.
Там на плюсах дофига
Можно было и догадаться, что после "все" следом идёт "же".
>На Python написали EVE OnlineИгра стала лучшей только благодаря языку, или её возможно переписать на нормальных языках.
Не томите, осветите этот вопрос.
Странные в целом ребята вот вроде каждый год пионеры пишут имв рассылку о проблемах
и даже stackless попытался решить парочку проблем, но нет эти охламоны добавили новый тип присваивания значений переменным? Вот что происходит когда уходит идеолог от разарботки сразу проект сказываеться в говнище
Sub-interpreters в 3.9 пофиксят проблему гила.
А сейчас разве нельзя создать несколько экземпляров Python в своем C API коде и организовать для них CHANNEL на базе тех же очередей с мьютексом. Выглядит на порядок проще чем вся эта чепуха с маршалингом байткода Python из родительского процесса.
Можно, но тогда надо писать на C.
С питоновскими повадками - лучше уж в GO - там хоть GC есть.
>чтобы избежать привязок к конкретным имена, например, если имя параметра планируется изменить в будущемНо мы-то понимаем, зачем это нужно, да? ;)
Ответ: Чтобы заменить неполиткорректные имена.
Очень давно ждал. Хм. Если подумать, то так уже где-то больше года, да? Годнота, сплошная годнота.
Ну все теперь после корректирующего релиза можно уже и в продакшен?
Скорее всего не раньше весны.
Не освещено как там теперь работает глоб в разных ос.
>На платформе Windows реализация asyncio переведена на использование класса ProactorEventLoop;Как это может отразиться на кроссплатформенности?
Положительно, до этого приходилось его руками выставлять.
Питон постепенно превращается из легкочитаемого бейсика в очень медленный C++
А кстати ты пропустил это, он не легкочитаемый и не бейсик уже лет 25 так по меньшей мере. Когда там 1.4 вышел? Вроде в то время этот мифический бейсик уже и кончился.
Вы реально на версиях до 1.4 что-то писали?
Только про 1.4/1.6 могу сказать, что раньше было утверждать не берусь. Но по моим наблюдениям с каждой версией там всё меньше простоты становилось. Если нужна она, посмотрите на lua.
Я питон разлюбил после for ... else, если что))
Не люблю контринтуитивные конструкции, каким бы синтаксическим сахаром они бы ни были.
Прочитал про for..else.
Вот это прикол!
Мы - нет, зато они - blade of darkness
продайте её thq nordic кто-нибудь
О, годнота. Где бы её нынче купить до коллекции, что-то ни в стиме, ни в gog нет.
А вот Rune, внезапно, ожидает вторая часть (всего-то лет 20 прошло)
>Поддержка операций присвоения внутри сложных выражений.По-моему, это ужасно. Пришли сишники и портят мой питон.
а сишники никуда и не уходили
Да. Конечно нас вытеснили всякие Java, C# и прочие пионеры со своими новомодными Rust, Golang и конечно всякие антипаттерны вроде С++ со своими vtables
> По-моему, это ужасно. Пришли сишники и портят мой питон.Емнип, это предложил сам Guido van Rossum: https://www.python.org/dev/peps/pep-0572/ Он заметил, что питонисты часто копипастят выражения, чтобы сэкономить пару строк кода. Вот чтобы защититься от копипаста он и предложил этот вариант.
Его тогда по этому поводу настолько затроллили, что он после того срача ушёл с поста.
> Его тогда по этому поводу настолько затроллили, что он после того срача ушёл с поста.Совсем скоро одни тролли кругом будут. Ладно раньше только на российских ресурсах, так теперь весь мир начали наполнять. Спасить мир нужно от этой дряни.
ужасная экосистема у языка, без поллитра в многообразии тулзов не разберёшься
плюс он настолько разросся, что хрен вникнешь. можно, конечно, какой-то скрипт интуитивно накалякать (и то с ошибками), но для чего-то большего с бест практисес нужно потратить кучу временивердикт: не нужен. запилите альтернативу с нормальными тулзами изначально (как в расте). и чтоб не разросся в неведомое нечто
Да всё нормально там с экосистемой. Хочешь берёщь spacy, хочешь берёшь pandas, хочешь scipy или там keras раз pytorch не угодил. Для каждой задачи есть свои инструменты. Какие-то при этом лучше остальных, но имеют свои недостатки, какие-то хуже, но обладают подходящими качествами. Как правило вся информация на поверхности, как следствие популярности языка.
> без поллитра в многообразии тулзов не разберёшьсяДобро пожаловать в данную нам в ощущениях реальность. А ты думал в сказку попал?
> вердикт: не нужен
оналитег с лора не нужен
уже запилили Nim nim-lang.org
Глянул мельком, неплохо. Вполне возможно, что действительно заменю питон для скриптов/мелких тулзов. Спасибо, буду изучать
Опять отступы. Опять кастомные шаблонизаторы вместо встроенного языка. Вебу такие языки противопоказаны.
Для скриптов и наколенных поделий пойдёт
Только Python с этим всем барахлом распиарен, а Nim знаем только ты да я и еще разработчик.
Хотя я думаю, что ...
С инклюдами вместо импортов, ага, спасибо.
мне вот после питона ваш с++ и java кажутся простыми (ну конечно с со своими загонами яп спецефичными) в плане чтения, реально просто .. но вот кодить жутко неудобно
если действовать на питоне как на функциональных языках, он и правда прост. но классы и все это ООп.. там реально не так просто. в плюсах есть одно "но", да и всех компилируемых, полностью продуманное приложение до начала написания или пиши пропало. переменные то определяются до основного тела программы. а в питоне привыкаешь вводить переменные прямо по ходу. это расслабляет))
А потом хлоп и нет такой переменной прям в рантайме.
Вообще это только создает проблемы. Понятное дело что IDE должна как-то помогать, но не всегда
говоря о питоне. нефиг писать на нем очешуенные комбайны. он может и позволяет это сделать, но всегда лучше сишные программы оборачивать питоном. это просто меньше проблем создает. ну создавались интерпретируемые языки для постоянного выполнения и эффективного управления нагрузкой. ни один из них. вот и надо его использовать в малых скиптах, которые в лучшем случае запускаются из главного. нечего разводить комбайнеров.)) хочешь быстроты? сделай основу на плюсах или чем там еще типа раста, а оберни это в питон и все. и голова болеть не будет и работать будет хорошо.
>> переменные то определяются до основного тела программы.Серьезно? Чувствуется, мнение настоящего спеца...
серьезно ? будем теперь объясняться как вводить переменные в си? я просто описал одну из фишек удобства в питоне в сравнении с компилируемыми языками типа си/с++. и это действительно одна из удобнейших вещей в питоне. пиля спецов то набежало)))))
> Поддержка операций присвоения внутри сложных выраженийОно-то и в стат. типизации -- еще те грабли, а уж в динамической …
Ничего страшного нет. В реальности будет написано так:if (n:int := len(a)) > 10:
Пихтону явно не хватает стандартизации каким-нибудь злобным и суровым комитетом бородачей, которые положили бы конец этой свистопляске улучшательств. Ибо нельзя ЯП разрабатывать так, словно это обычный прикладной софт.
Прошли те времена, когда ЯП были чем-то священным и недосягаемым. Можно отрицать это, злиться, торговаться или что там по стадиям принятия неизбежного, но факты таковы, что ЯП сейчас – именно что обычный прикладной софт.
Да, у этого подхода есть куча недостатков, но комитет бородачей ещё хуже.
> Да, у этого подхода есть куча недостатков, но комитет бородачей ещё хуже.ЯП — как рецепт приготовления блюда. Если у тебя каждый день новый рецепт, блюдо тоже будет всегда получаться разное. Для приличных ЯП обязательна стандартизация. Благодаря ей ты всегда более-менее точно знаешь, что может и должно получаться из сочетания твоих хеллоуворлдов и компиляторов. В неприличных же языках стандартов нет, вследствие чего получается как в Пыхе или Пихтоне. Молодым, наверное, это без разницы, у них ещё есть вера в бесконечную юность. А людям постарше недосуг разбираться в продуктах жизнедеятельности хипсторов, которые в сотый раз изобретают Си, Паскаль, Фортран и Кобол для каждого из новых модных языков (Гвидо тоже изобретал, кстати). Если ты не сильно опоздал родиться, ты знаешь, на каких китах стоят эти ваши ИТ, и что всё полезное давно изобретено, однако успешно и с воодушевлением забывается каждым новым поколением ногоруких. Да, и потом они снова и снова изобретают Си, Паскаль, Фортран и Кобол, потому что надо же не только писать код вообще, который никому на само деле не нужен, но и какие-то задачи при его помощи решать.
> всё полезное давно изобретеноВот эта предпосылка ложна, и вся цепочка рассуждений, с неё начавшаяся, тоже.
> А людям постарше недосуг разбираться в продуктах жизнедеятельности хипсторов, которые в сотый раз изобретают СиНу в целом согласен, но вот в Си тоже нехватает многих вещей вроде defer.
Так же очень много нужно всего тащить из утилитарных модулей: списки, хеши, очереди и вообще почти все.В Python вообще непоянтная идеологическая составляющая. Все специализированные пакеты по сути внешний Си код: Pandas (Mathplotlib), NumPy, SciPy, а зачем тогда Python? А Python в данном случае это просто UI к этим библиотекам. Просто удобный способ вызвать C функции?
Что на мой взгляд реально нужно сделать было еще давно:
- sub-interpreters с каналами и прочим (решили бы пробелмы с GIL и угомонили бы армию соплежевателей);
- прикрутить уже какой-то UI помимо tkinter (может хоть можно было бы написать что-то для десктопа);
- стабилизирвоать модули (а то ведь ну правда зоопарк каких-то полуработающих инструментов ez, pip, wheel, setup_tools, dist_util и все это реально зависит от всего), а API до сих пор ни у чего из этого толком нет.
- загрузка как-то байткода очень хитрая сейчас (PythonByteCodeReader, PythonCompile.Compile и достаточно, а там сейчас наплодили дохренища всего и проще не стало).Опять таки слабая стандартная библиотека просто убивает это несравнимо с тем же JavaScript в котром сегодня свистоперделок сейчас в самой Node.js в ядре просто уйма. Хотя и NPM заблевали своими соплями.
> В Python вообще непоянтная идеологическая составляющая. Все специализированные пакеты
> по сути внешний Си код: Pandas (Mathplotlib), NumPy, SciPyА чего matplotlib скромно в скобочках? Не вписался в парадигму?
Вообще-то - pure-Python проектов более чем. Pandas, внезапно, тож.
> ezесли речь про easy_install, то это легаси и он уже давным давно больше не нужен
> wheel
формат дистрибутива (упакованного релиза) пакета с уже скомпилированными бинарями (pure python wheels без компилируемого кода тоже можно делать) и одноименная либа, напрямую это никто не юзает – только через setuptools и pip
> distutils
встроенная библиотека для работы с дистрибутивами пакетов
> setuptools
это надстройка над distutils, которая по сути является неотъемлемой частью любой инсталяции Python, кроме случаев встраивания интерпретатора куда-либо. Как питонист с чуть более чем 5 годами опыта не могу не согласиться — та ещё дрянь в плане обратной совместимости, предсказуемости релизов и входящих в них изменений, частоты этих релизов и обоснования их необходимости. Самое мерзотное тут то, что когда тебе надо подготовить первый релиз нетривиального пакета "по всем канонам", то ты сталкиваешься с ужасной документацией, в которой половины нужных вещей тупо нет, и их приходится читать их на давно заброшенной http://peak.telecommunity.com/DevCenter/setuptools (где полезной инфы намного больше), а если не повезёт, и нужную вещь добавили в более свежих релизах и предусмотрительно не задокументировали (или сделали это на отцепись), то приходится лезть в не самый приятный для чтения код.
> pip
идёт в комплекте с CPython, а если не идёт, то его скачивалка идёт: https://docs.python.org/3/library/ensurepip.html
По сути конечному юзеру из всего вышеупомянутого нужен только pip, либо обёртки над ним в виде Pipenv и Poetry. И да, с обёртками как раз развели бардак, т.к. "официальной" пока нет – обе упоминаются как рекомендованные в различных репозиториях /psf и /python на GitHub. Лично я по старинке использую virtualenvwrapper и pip-tools (pip-compile + pip-sync), оказалось очень удобно и результат всегда предсказуем. Поломки из-за "не той" версии setuptools и поиски "нужной" решаются автоматически. Прям какой-то zc.buildout на минималках получился.
> слабая стандартная библиотека
Сильное заявление. Опровергать я его, конечно, не буду.
Вы не правы, именно древние языки типа Java или Python из 95 года как раз обросли дичью легаси и костылями.
Вот Golang например наоборот максимально по синтаксису заморожен и развивается очень осторожно.
И это правильно
> не хватает стандартизации каким-нибудь злобным и суровым комитетом бородачейСтесняюсь спросить, ты хоть сайт языка мельком посмотрел?
Ты сам для начала эту свистопляску прочитай. Там каждый принимает то что ему в голову взбредет. Раньше было еще куда ни шло, но после ухода Гвидо Остапа явно понесло куда-то не туда.
> Там каждый принимает то что ему в голову взбредет.Каждый, включая вас?
>> не хватает стандартизации каким-нибудь злобным и суровым комитетом бородачей
> Стесняюсь спросить, ты хоть сайт языка мельком посмотрел?
> https://www.python.org/dev/peps/Мне неинтересно, что там наковыряли из своих ног пихтонеры. Стандарт — это буковки ISO и IEC, ну и ещё DIN. Есть там такие буквы? Нету.
> Стандарт — это буковки ISO и IEC, ну и ещё DIN.Ой, я вас умоляю. Кто-то еще пользуется ISO стандартом Scheme?
И убить его основные применения? Убить сообщество вокруг него?
Хотите писать скрипты, стандартизированные бородачами, вон какой Perl придумали.
Глупость. Perl расширяется сообществом от версии к версии.
дорасширялся до раку)) теперь ракунисты пойдут))
Есть идеальные языки, созданные суровыми дядьками, и утверждённые комитетами. Но ими не пользуются почти. Именно из за ограничений в угоду идеалам.
таки гвидо бородат ... давно бородат, с бородой так сказать. в не бороде стало быть дело хотя он же ушел так сказать на покой так что ...
Слышал, что он родился в бороде =)
А как там в питоне с обратной совместимостью ? Ну софт написанный в версии 2.7 буде без проблем работать в текущей ?
3 не совместим с 2. с добрым утром!
Гвидобейсик же. Будто так сложно переписать свою поделку.
Ты серьезно. Даже если это байда для какой-то ерунды вроде Django то скорее всего не взлетит.
Ну можно писать так что будет совместимо. Только придётся ограничивать себя фичами примерно 3.2.
Но в 2019 python2 для новых сервисов поддерживать не нужно. Даже через six.
> Выпуск языка программирования Python 3.8
> софт написанный в версии 2.7 буде без проблем работать
> АдекватОукей :) Минутка адекватности в треде </sarcasm>
Отличная шутка в треде. Думаю одна из лучших.
На нём и от 3.7 далеко не всё заработает
Эй, я еще на 3.7 не перешел, стоять!
Не надо переживать ничего не изменилось. Все как было так и осталось добавили перделок.
Вот в 3.9 будет реально круто, а тут пока так лайтовая шляпа.
А что будет в 3.9? Добавят switch?)Имхо, в питоне многих раздражает GIL, но большего требовать динамического скриптового и смысла нет. Тыкаю вот в Golang. Знакомый отметил заметное ускорение выполнения кода по сравнению с питоном, похоже, это новая сишка для неосиляторов сишки.
Ждём когда скобки завезут.
Тебе на Java или С++
Скобки обязательно завезут.)))
>>> from __future__ import bracesFile "<stdin>", line 1
SyntaxError: not a chanceНи единого шанса)
continue в finally?
Хм, а зачем? Для вложенных циклов?
А зачем вообще finally?
Ну просто это странно.
Например, мы словили исключение в теле цикла. Дошли до finally, а там стоит continue, из-за которого сразу ибем на следующую итерацию.
Ок.
Вариант 2:
Мы не словили исключения. Дошли до finally, .перешли к следующей итерации
В итоге, код в теле цикла, написанный после finally, исполнен не будет никогда.
Т.е это то же самое, как если бы не было никакого continue в finally, а просто сразу же заканчивалось тело цикла.
Или я что-то не так понимаю?
По-моему тут написано что continue в try выполнит finally и только после этого перескочит в начало цикла. https://docs.python.org/3.8/reference/simple_stmts.html#cont...
Тогда да, тогда полезно
А тут написано что в finally continue было использовать нельзя, теперь как я понимаю можно https://docs.python.org/3.8/reference/compound_stmts.html#fi...>заканчивалось тело цикла
наверное дело в том что оно не обязано там заканчиваться и вообще это баг был
Да оно и не обязано заканчиваться сразу после finally, по идее.
А нафига оно там? Если exception в теле цикла - оно отработает следующую итерацию после блока. Совсем от криволапых наверное.
Когда там уже 4.0 будет?
Не раньше чем гил выпилят и джит запилят (предлагаю следующую версию назвать 6).
6 уже пробовали. Раку получилось.
Когда найдут достаточное количество странностей которые можно запилить что бы поломать соместимость так же жестко как при переходе с двойки на тройку
а в плюсах можно в if делать что то вроде такого?
if (std::cin >> int n >0)
вот так можно:
if (std::cin >> n, n > 0) но n должна быть объявлена ранее, а как все сделать в условной конструкции - и объявление переменной и >> и сравнение - возможно ли такое?
Можно, разрешаю
Так глядишь, и ";" скоро завезут :)
А что с ";", что её нужно завозить?
> Так глядишь, и ";" скоро завезут :)А также три вида скобок. И отменят отступы.
Да погоди ты там и так сейчас нихера не понятно вот {} это set или dict?
> Да погоди ты там и так сейчас нихера не понятно вот {}
> это set или dict?Все просто!
>>> print("{{}}:{} {{ ( ) }}:{}".format(type({}),type({()}))){}:<class 'dict'> { ( ) }:<class 'set'>
;)
>>> print('Чувак');print('Ты всё проспал')Чувак
Ты всё проспал
> Так глядишь, и ";" скоро завезут :)С разморозкой!
https://docs.python.org/release/1.4/ref/ref2.html#HDR0 (1996)
The following tokens serve as delimiters in the grammar:
( ) [ ] { }
, : . ` = ;
Это конец. Борщ в итоге, как С++.
> Поддержка операций присвоения внутри сложных выражений.В PHP 100 лет уже как и с обычным =
В JS это завезите.
Не надо такое в Js.. больше возможностей для говнокода
Деструктуризация в js есть и хватит
>При помощи нового оператора ":="Самое отвратительное нововведение. Только нового синтаксиса для присвоения нам не хватало.
> Самое отвратительное нововведение. Только нового синтаксиса для присвоения нам не хватало.А как лучше записать без нового синтаксиса вот это:
stuff = [(y := f(x), x/y) for x in range(5)]
Вызывать функцию дважды? (f(x), x/f(x)) Впихнуть лямбду? Развернуть в 4 строки с присваиванием? Предложи вариант лучше.
Смотри на это не как на присваивание, а как на named expression. Если у тебя выражение дублируется несколько раз в одной строке, то ты вместо копипасты можешь один раз дать ему имя и дальше это имя использовать.
Никто не говорит, что так нужно писать всегда. Наоборот, в https://www.python.org/dev/peps/pep-0572/ есть огромный список того, как НЕ НАДО делать. Но если ты всё равно пишешь говнокод, то такая конструкция позволяет написать его чуточку лучше.
[ (f, x/f) for x, f in enumerate(map(f, range(5))) ]
[ (f, x/f) for x, f in map(lambda x: (x, f(x)), range(5))) ]Переживаемо. Хуже когда в if-else приходится писать много лишних строк с промежуточными вычислениями, собственно это как раз примеры из текста новости.
>А как лучше записать без нового синтаксиса вот это:Во-первых, то что написано - это выстрел в ногу. Должно быть написано как-то так:
stuff = []
for x in range(5):
y = f(x)
stuff.append((y, x/y))
Во-вторых, не нужно было вводить новый синтаксис, можно было использовать простое = . Аргументация в PEP притянута за уши.> The syntactic similarity between if (x == y) and if (x = y) belies their drastically different semantics. Thus this proposal uses := to clarify the distinction.
Они опоздали лет на 30. Был бы в питоне := для присваиваний изначально - был бы он там же, где сейчас паскаль.
> Во-первых, то что написано - это выстрел в ногу. Должно быть написано
> как-то так:
> stuff = []
> for x in range(5):
> y = f(x)
> stuff.append((y, x/y))И мы получили 4 строки вместо одной.
А опыт показывает, что реальные живые программисты в таких случаях пишут одну строку. И чаще всего это будет строка с двойным вызовом (f(x), x/f(x)). О чём и написано в PEP.
Мы тут насочиняли уже 3 альтернативы, и все они хуже, чем новый синтаксис. Вот для этого новый синтаксис и придуман. Он не должен сделать код идеальным, он просто делает его чуточку лучше.
> Во-вторых, не нужно было вводить новый синтаксис, можно было использовать простое =
> . Аргументация в PEP притянута за уши.Добавить "простое =" — это всё равно новый синтаксис, хоть так хоть иначе. Но главное применение этого синтаксиса — named expression. А там сравнение по "=" встречается довольно часто. А присваивание — редко. Вот его и сделали := чтобы он явно отличался от сравнения — так просто легче читать.
> Они опоздали лет на 30. Был бы в питоне := для присваиваний
> изначально - был бы он там же, где сейчас паскаль.Паскаль сдох не из-за плохого языка, а из-за неудачной политики борланда. Это в наших широтах всё бесплатно, а у остальных за паскаль надо было платить деньги. А за си — нет. В результате паскаль оказался не нужен — на нём нечего было писать, всё уже было прочно занято другими языками.
А разработчиков паскаля потом наняли в макрософт, и они создали дотнет.
Радйся, что нет var, let и const. А у некоторых есть =)
local, global и const - очень даже помогают. Впрочем, у некоторых идентификатор становится константой уже в том случае, если первая буква заглавная.
Да эти операторы, как раз помогают понять, чего тут кто накатал.
> Поддержка операций присвоения внутри сложных выражений. При помощи нового оператора ":=" появилась возможность выполнять операции присвоения значений внутри других выражений...Думал до Гвидо уже никогда не дойдёт, что его попытки заствить писать код просто методом синтаксической бедноты делают только хуже. Ещё бы до ноего дошло, что нужно порезать self, метапрограммирование и манки патчинг.
> Ещё бы до ноего дошло, что нужно порезать self, метапрограммирование и манки патчинг.self отличное решение, а вот множественное наследование и правдо надо убрать нахрен вместе с ООП. Вот живут на типах как-то в Swift и Golang и рады жизни.
Метапрограммирвоание тоже херня какая-то зачем лазить в какие-то свойства черт знает чего там портить в обьектах.
Манки патчинг тоже согласен - выкинуть к херам собачим. Повдеение должно быть всегда одинаковым. Хотите другое поведение заводите такое же но в другом неймспейсе.
Черт С++ выходит какой-то динамический.
иксперт, ничего сложней хеллоуворлда на пейтоне не писавший, детектед
Не надо запрещать наследование, надо запрещать множественное наследование как сделали в шарпах.
Какой Гвидо? Если тот, который, то он уже год как не работает.
> Какой Гвидо? Если тот, который, то он уже год как не работает.Когда это внедрялось — ещё работал. Это — его фича.
Он был против. Из-за этой фичи он и ушёл как раз.
> Он был против. Из-за этой фичи он и ушёл как раз.Это — его фича. Он стоит в авторах PEP 572, он искал примеры в исходниках dropbox-а, и он холиварил в рассылке. А его заплевали. Его это достало. Потому и ушёл.
Лучше бы они blist-ы добавили. Списки, где вставка, удаление, сложение и адресация по индексу O(1) — что может быть лучше? Но нет...
Пиши на Си. Там еще можно память выделять, как тебе нужно, а не как компилятору.
> Лучше бы они blist-ы добавили. Списки, где вставка, удаление, сложение и адресация по индексу O(1) — что может быть лучше?Случай, когда тебя нагрели напёрсточники, но ты ещё не понял как и рад до ушей
O(log n)
https://pypi.org/project/blist/
> O(log n)
> https://pypi.org/project/blist/А у list-а там O(n). blist лучше же, не?
В новости нет самого главного! Добавили `functools.cached_property`.
В тайпинге ещё одна важная вещь появилась: Protocol
Еще Literal и Final, только они в typing_extensions уже сто лет как есть.
В 4 версии ждем Пайрутины или незачёт.
Ну тогда еще и pychan-ы нужны, без них pyroutine-ы не взлетят.
чем оно лучше yield-а?
> while (block := f.read(256)) != '':При Гвидо такого перла не было :-(
Rest in Peace sweet Python
> При Гвидо такого перла не было :-(Гвидо — автор этого "перла".
Любой язык со временем превращается в Perl