The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск языка программирования Python 3.8

15.10.2019 12:39

После полутора лет разработки представлен значительный релиз языка программирования Python 3.8. Корректирующие обновления для ветки Python 3.8 планируется выпускать в течение 18 месяцев. Критические уязвимости будут исправляться 5 лет до октября 2024 года. Корректирующие обновления для ветки 3.8 будут выходить раз в два месяца, на декабрь намечен первый корректирующий релиз Python 3.8.1.

Среди добавленных новшеств:

  • Поддержка операций присвоения внутри сложных выражений. При помощи нового оператора ":=" появилась возможность выполнять операции присвоения значений внутри других выражений, например, чтобы избежать двойного вызова функций в условных операторах и при определении циклов:
    
       if (n := len(a)) > 10:
          ...
    
       while (block := f.read(256)) != '':
          ...
    
  • Поддержка нового синтаксиса задания аргументов функции. При перечислении аргументов во время определения функции теперь можно указывать признак "/", позволяющий отделить аргументы, значения которым могут быть присвоены только на основе порядка перечисления значений во время вызова функции, от аргументов, допускающих присвоение в произвольном порядке (синтаксис "переменная=значение"). С практической стороны новая возможность позволяет в функциях на языке Python полностью эмулировать поведение существующих функций на языке Си, а также избежать привязок к конкретным именам, например, если имя параметра планируется изменить в будущем.

    Флаг "/" дополняет собой ранее добавленный признак "*", отделяющий переменные, для которых применимо только присвоение в форме "переменная=значение". Например, в функции "def f(a, b, /, c, d, *, e, f):" переменные "a" и "b" могут быть присвоены только в порядке перечисления значений, переменные "e" и "f", только через присвоение "переменная=значение", а переменные "c" и "d" любым из указанных способов:

    
       f(10, 20, 30, 40, e=50, f=60)
       f(10, 20, с=30, d=40, e=50, f=60)
    
  • Добавлен новый Си API для настройки параметров инициализации Python, позволяющий полностью контролировать всю конфигурацию и предоставляющий расширенные средства обработки ошибок. Предложенный API упрощает встраивание функциональности интерпретатора Python в другие приложения на языке Си;
  • Реализован новый протокол Vectorcall для более быстрого обращения к объектам, написанным на языке Си. В CPython 3.8 доступ к Vectorcall пока ограничен внутренним использованием, перевод в разряд публично доступных API намечен в CPython 3.9;
  • Добавлены вызовы Runtime Audit Hooks, предоставляющие приложениям и фреймворкам на языке Python доступ к низкоуровневой информации о ходе выполнения скрипта для проведения аудита выполняемых действий (например, можно отследить импорт модулей, открытие файлов, использовании трассировки, обращения к сетевым сокетам, запуск кода через exec, eval и run_mod);
  • В модуле pickle обеспечена поддержка протокола Pickle 5, используемого для сериализации и десериализации объектов. Pickle позволяет оптимизировать передачу больших объёмов данных между процессами Python в многоядерных и многоузловых конфигурациях, сократив число операций копирования памяти и применяя дополнительные техники оптимизации, такие как задействование специфичных для определённых данных алгоритмов сжатия. Пятая версия протокола примечательна добавлением режима отделённой передачи (out-of-band), при которого данные могут передаваться отдельно от основного потока pickle.
  • По умолчанию активирована четвёртая версия протокола Pickle, которая по сравнению с ранее предлагавшейся по умолчанию третьей версией позволяет добиться более высокой производительности и сокращения размера передаваемых данных;
  • В модуле typing представлено несколько новых возможностей:
    • Класс TypedDict для ассоциативных массивов, в которых для связываемых с ключами данных явно задаётся информация о типе ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Тип Literal, позволяющий ограничить параметр или возвращаемое значение несколькими предопределёнными значениями ("Literal['connected', 'disconnected']").
    • Конструкция "Final", дающая возможность определить значения переменных, функций, методов и классов, которые не могут быть изменены или переназначены ("pi: Final[float] = 3.1415926536").
  • Добавлена возможность назначения кэша для скомпилированных файлов с байткодом, сохраняемого в отдельном дереве ФС и отделённого от каталогов с кодом. Путь для сохранения файлов с байткодом задаётся через переменную PYTHONPYCACHEPREFIX или опцию "-X pycache_prefix";
  • Реализована возможность создания отладочных сборок Python, использующих идентичный с релизом ABI, что позволяет в отладочных сборках загружать написанные на языке СИ расширения, собранные для стабильных выпусков;
  • В f-строках (форматируемые литералы с префиксом 'f') обеспечена поддержка оператора "=" (например, "f'{expr=}'"), позволяющего преобразовать выражение в текст для упрощения отладки. Например:
    
       >>> user = 'eric_idle'
       >>> member_since = date(1975, 7, 31)
       >>> f'{user=} {member_since=}'
       "user='eric_idle' member_since=datetime.date(1975, 7, 31)"
    
  • Выражение "continue" разрешено использовать внутри блока finally;
  • Добавлен новый модуль multiprocessing.shared_memory, позволяющий использовать сегменты разделяемой памяти в многопроцессных конфигурациях;
  • На платформе Windows реализация asyncio переведена на использование класса ProactorEventLoop;
  • Производительность инструкции LOAD_GLOBAL увеличена примерно на 40% за счёт использования нового механизма кэширования объектного кода.


  1. Главная ссылка к новости (https://www.mail-archive.com/p...)
  2. OpenNews: Намечена большая чистка стандартной библиотеки Python
  3. OpenNews: Утверждена новая модель управления разработкой Python
  4. OpenNews: Выпуск Nuitka 0.6.0, компилятора для языка Python
  5. OpenNews: Проект Python для соблюдения политкорректности избавляется от терминов "master" и "slave"
  6. OpenNews: Увидел свет язык программирования Python 3.7
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (143) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:13, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Как там GIL поживает, всё ещё достовляет головную боль питонистам?
     
     
  • 2.3, Аноним (3), 13:25, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +83 +/
    По крайне мере не всем разу, а по одному...
     
     
  • 3.75, Аноним (75), 18:26, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Раньше через каждые 100 инструкций, теперь по таймеру...
     
  • 2.5, Аноним (5), 13:27, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    У тех у кого от джила боль не пользуются питоном. Либо это особые ценители поедания кактусов.
     
  • 2.6, corvuscor (ok), 13:30, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Какую головную боль? Питон не для этого сделан. Все бы вам гвозди микроскопом забивать.

    Кому сильно горит - тот давно юзает multiprocessing.

     
     
  • 3.12, Аноним (5), 13:43, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они наверняка на другом языке ловят сегфолты (зато быстро) поэтому сидят на пистоне и ноют.
     
     
  • 4.90, Аноним (90), 22:45, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Сегфолты скорее редкость на других языках, а вот GIL своей тенью настигает тебя почти всегда.
    Впрочем хорошо бы понять, что там с выполнением вызовов C API функций в ThreadPool. Это тоже доставляет ряд проблем начинающим программистам. Как-то ни там не тут.
     
  • 2.57, Аноним (57), 16:06, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    GIL - одно из основных ограничений языка, учитываемых при его выборе. В тех задачах, для которых он критичен, разумные люди используют другие языки, а проблемы неразумных шерифа не интересуют.
     
     
  • 3.63, Аноним (63), 17:19, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    На Python написали EVE Online - лучшая игра в своем жанре. Да stackless, но все python!
     
     
  • 4.65, Сомневающийся (?), 17:46, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Враки, далеко не все.
    Там на плюсах дофига
     
     
  • 5.115, Аноним (115), 05:24, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Можно было и догадаться, что после "все" следом идёт "же".
     
  • 4.76, Тот_Самый_Анонимус (?), 18:36, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >На Python написали EVE Online

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

     
  • 4.105, Аноним (90), 23:39, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Странные в целом ребята вот вроде каждый год пионеры пишут имв рассылку о проблемах
    и даже stackless попытался решить парочку проблем, но нет эти охламоны добавили новый тип присваивания значений переменным? Вот что происходит когда уходит идеолог от разарботки сразу проект сказываеться в говнище
     
  • 2.77, Аноним (77), 19:04, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Sub-interpreters в 3.9 пофиксят проблему гила.
     
     
  • 3.92, Аноним (90), 23:02, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А сейчас разве нельзя создать несколько экземпляров Python в своем C API коде и организовать для них CHANNEL на базе тех же очередей с мьютексом. Выглядит на порядок проще чем вся эта чепуха с маршалингом байткода Python из родительского процесса.
     
     
  • 4.135, Аноним (135), 16:01, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Можно, но тогда надо писать на C.
     
     
  • 5.138, Sly_tom_cat (ok), 14:33, 18/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С питоновскими повадками - лучше уж в GO - там хоть GC есть.
     

  • 1.2, Аноним (2), 13:24, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    >чтобы избежать привязок к конкретным имена, например, если имя параметра планируется изменить в будущем

    Но мы-то понимаем, зачем это нужно, да? ;)

    Ответ: Чтобы заменить неполиткорректные имена.

     
  • 1.7, Аноним (7), 13:35, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень давно ждал. Хм. Если подумать, то так уже где-то больше года, да? Годнота, сплошная годнота.
     
     
  • 2.8, Аноним (5), 13:39, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну все теперь после корректирующего релиза можно уже и в продакшен?
     
     
  • 3.10, Аноним (7), 13:41, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорее всего не раньше весны.
     

  • 1.9, Аноним (5), 13:40, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    Не освещено как там теперь работает глоб в разных ос.
     
  • 1.11, Аноним (2), 13:42, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >На платформе Windows реализация asyncio переведена на использование класса ProactorEventLoop;

    Как это может отразиться на кроссплатформенности?

     
     
  • 2.83, Аноним (83), 21:38, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Положительно, до этого приходилось его руками выставлять.
     

  • 1.13, None (??), 13:47, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    Питон постепенно превращается из легкочитаемого бейсика в очень медленный C++
     
     
  • 2.14, Аноним (7), 13:52, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А кстати ты пропустил это, он не легкочитаемый и не бейсик уже лет 25 так по меньшей мере. Когда там 1.4 вышел? Вроде в то время этот мифический бейсик уже и кончился.
     
     
  • 3.16, None (??), 14:12, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы реально на версиях до 1.4 что-то писали?
     
     
  • 4.18, Аноним (7), 14:21, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Только про 1.4/1.6 могу сказать, что раньше было утверждать не берусь. Но по моим наблюдениям с каждой версией там всё меньше простоты становилось. Если нужна она, посмотрите на lua.
     
     
  • 5.42, None (??), 15:24, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я питон разлюбил после for ... else, если что))
    Не люблю контринтуитивные конструкции, каким бы синтаксическим сахаром они бы ни были.
     
     
  • 6.89, Q2W (?), 22:38, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Прочитал про for..else.
    Вот это прикол!
     
  • 4.54, Аноним (54), 15:41, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мы - нет, зато они - blade of darkness
     
     
  • 5.56, Аноним (7), 15:49, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    продайте её thq nordic кто-нибудь
     
  • 5.72, Аномномномнимус (?), 18:07, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    О, годнота. Где бы её нынче купить до коллекции, что-то ни в стиме, ни в gog нет.
    А вот Rune, внезапно, ожидает вторая часть (всего-то лет 20 прошло)
     

  • 1.15, Георгий (??), 14:10, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    >Поддержка операций присвоения внутри сложных выражений.

    По-моему, это ужасно. Пришли сишники и портят мой питон.

     
     
  • 2.17, Аноним (3), 14:16, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    а сишники никуда и не уходили
     
     
  • 3.94, Аноним (90), 23:04, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да. Конечно нас вытеснили всякие Java, C# и прочие пионеры со своими новомодными Rust, Golang и конечно всякие антипаттерны вроде С++ со своими vtables
     
  • 2.87, Аноним (87), 22:28, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > По-моему, это ужасно. Пришли сишники и портят мой питон.

    Емнип, это предложил сам Guido van Rossum: https://www.python.org/dev/peps/pep-0572/ Он заметил, что питонисты часто копипастят выражения, чтобы сэкономить пару строк кода. Вот чтобы защититься от копипаста он и предложил этот вариант.

    Его тогда по этому поводу настолько затроллили, что он после того срача ушёл с поста.

     
     
  • 3.95, Аноним (90), 23:06, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Его тогда по этому поводу настолько затроллили, что он после того срача ушёл с поста.

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

     

  • 1.19, Аноним (19), 14:37, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    ужасная экосистема у языка, без поллитра в многообразии тулзов не разберёшься
    плюс он настолько разросся, что хрен вникнешь. можно, конечно, какой-то скрипт интуитивно накалякать (и то с ошибками), но для чего-то большего с бест практисес нужно потратить кучу времени

    вердикт: не нужен. запилите альтернативу с нормальными тулзами изначально (как в расте). и чтоб не разросся в неведомое нечто

     
     
  • 2.22, Аноним (7), 14:50, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да всё нормально там с экосистемой. Хочешь берёщь spacy, хочешь берёшь pandas, хочешь scipy или там keras раз pytorch не угодил. Для каждой задачи есть свои инструменты. Какие-то при этом лучше остальных, но имеют свои недостатки, какие-то хуже, но обладают подходящими качествами. Как правило вся информация на поверхности, как следствие популярности языка.
     
  • 2.37, myhand (ok), 15:17, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > без поллитра в многообразии тулзов не разберёшься

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

    > вердикт: не нужен

    оналитег с лора не нужен

     
  • 2.55, Аноним (55), 15:44, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    уже запилили Nim nim-lang.org
     
     
  • 3.59, Аноним (19), 16:17, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Глянул мельком, неплохо. Вполне возможно, что действительно заменю питон для скриптов/мелких тулзов. Спасибо, буду изучать
     
     
  • 4.66, rshadow (ok), 17:47, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Опять отступы. Опять кастомные шаблонизаторы вместо встроенного языка. Вебу такие языки противопоказаны.
     
     
  • 5.67, Аноним (19), 17:50, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Для скриптов и наколенных поделий пойдёт
     
  • 3.96, Аноним (90), 23:08, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Только Python с этим всем барахлом распиарен, а Nim знаем только ты да я и еще разработчик.
    Хотя я думаю, что ...
     
  • 3.137, Эль (?), 18:07, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С инклюдами вместо импортов, ага, спасибо.
     
  • 2.84, волфа (?), 22:08, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    мне вот после питона ваш с++ и java кажутся простыми (ну конечно с со своими загонами яп спецефичными) в плане чтения, реально просто .. но вот кодить жутко неудобно
     
     
  • 3.86, аноним3 (?), 22:19, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    если действовать на питоне как на функциональных языках, он и правда прост. но классы и все это ООп.. там реально не так просто. в плюсах есть одно "но", да и всех компилируемых, полностью продуманное приложение до начала написания или пиши пропало. переменные то определяются до основного тела программы. а в питоне привыкаешь вводить переменные прямо по ходу. это расслабляет))
     
     
  • 4.97, Аноним (90), 23:09, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А потом хлоп и нет такой переменной прям в рантайме.
    Вообще это только создает проблемы. Понятное дело что IDE должна как-то помогать, но не всегда
     
     
  • 5.112, аноним3 (?), 01:01, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    говоря о питоне. нефиг писать на нем очешуенные комбайны. он может и позволяет это сделать, но всегда лучше сишные программы оборачивать питоном. это просто меньше проблем создает. ну создавались интерпретируемые языки для постоянного выполнения и эффективного управления нагрузкой. ни один из них. вот и надо его использовать в малых скиптах, которые в лучшем случае запускаются из главного. нечего разводить комбайнеров.)) хочешь быстроты? сделай основу на плюсах или чем там еще типа раста, а оберни это в питон и все. и голова болеть не будет и работать будет хорошо.
     
  • 4.118, йкЛще (?), 09:17, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> переменные то определяются до основного тела программы.

    Серьезно? Чувствуется, мнение настоящего спеца...

     
     
  • 5.120, аноним3 (?), 11:00, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    серьезно ? будем теперь объясняться как вводить переменные в си? я просто описал одну из фишек удобства в питоне в сравнении с компилируемыми языками типа си/с++. и это действительно одна из удобнейших вещей в питоне. пиля спецов то набежало)))))
     

  • 1.20, Аноним84701 (ok), 14:42, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > Поддержка операций присвоения внутри сложных выражений

    Оно-то и  в стат. типизации -- еще те грабли, а уж в динамической …

     
     
  • 2.68, rshadow (ok), 17:50, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего страшного нет. В реальности будет написано так:

    if (n:int := len(a)) > 10:

     

  • 1.21, Anonymoustus (ok), 14:46, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пихтону явно не хватает стандартизации каким-нибудь злобным и суровым комитетом бородачей, которые положили бы конец этой свистопляске улучшательств. Ибо нельзя ЯП разрабатывать так, словно это обычный прикладной софт.
     
     
  • 2.28, Аноним (28), 15:04, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Прошли те времена, когда ЯП были чем-то священным и недосягаемым. Можно отрицать это, злиться, торговаться или что там по стадиям принятия неизбежного, но факты таковы, что ЯП сейчас – именно что обычный прикладной софт.
    Да, у этого подхода есть куча недостатков, но комитет бородачей ещё хуже.
     
     
  • 3.47, Anonymoustus (ok), 15:30, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ЯП 8212 как рецепт приготовления блюда Если у тебя каждый день новый рецепт,... текст свёрнут, показать
     
     
  • 4.58, Аноним (28), 16:11, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > всё полезное давно изобретено

    Вот эта предпосылка ложна, и вся цепочка рассуждений, с неё начавшаяся, тоже.

     
  • 4.98, Аноним (90), 23:24, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну в целом согласен, но вот в Си тоже нехватает многих вещей вроде defer Так же... текст свёрнут, показать
     
     
  • 5.127, myhand (ok), 18:02, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > В Python вообще непоянтная идеологическая составляющая. Все специализированные пакеты
    > по сути внешний Си код: Pandas (Mathplotlib), NumPy, SciPy

    А чего matplotlib скромно в скобочках?  Не вписался в парадигму?

    Вообще-то - pure-Python проектов более чем.  Pandas, внезапно, тож.

     
  • 5.136, Аноним (135), 16:29, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    если речь про easy_install, то это легаси и он уже давным давно больше не нужен ... текст свёрнут, показать
     
  • 3.132, Анонимно (?), 00:11, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы не правы, именно древние языки типа Java или Python из 95 года как раз обросли дичью легаси и костылями.
    Вот Golang например наоборот максимально по синтаксису заморожен и развивается очень осторожно.
    И это правильно
     
  • 2.38, myhand (ok), 15:18, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > не хватает стандартизации каким-нибудь злобным и суровым комитетом бородачей

    Стесняюсь спросить, ты хоть сайт языка мельком посмотрел?

    https://www.python.org/dev/peps/

     
     
  • 3.48, Аноним (48), 15:30, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ты сам для начала эту свистопляску прочитай. Там каждый принимает то что ему в голову взбредет. Раньше было еще куда ни шло, но после ухода Гвидо Остапа явно понесло куда-то не туда.
     
     
  • 4.61, myhand (ok), 16:51, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Там каждый принимает то что ему в голову взбредет.

    Каждый, включая вас?

     
  • 3.49, Anonymoustus (ok), 15:33, 15/10/2019 Скрыто модератором
  • +/
     
     
  • 4.60, myhand (ok), 16:50, 15/10/2019 Скрыто модератором
  • –1 +/
     
  • 2.41, Аноним (41), 15:21, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И убить его основные применения? Убить сообщество вокруг него?
    Хотите писать скрипты, стандартизированные бородачами, вон какой Perl придумали.
     
     
  • 3.73, rshadow (ok), 18:09, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Глупость. Perl расширяется сообществом от версии к версии.
     
     
  • 4.113, аноним3 (?), 01:04, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    дорасширялся до раку)) теперь ракунисты пойдут))
     
  • 2.78, Kurakofu (?), 19:26, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть идеальные языки, созданные суровыми дядьками, и утверждённые комитетами. Но ими не пользуются почти. Именно из за ограничений в угоду идеалам.
     
  • 2.81, офалв (?), 20:42, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    таки гвидо бородат ... давно бородат, с бородой так сказать. в не бороде стало быть дело хотя он же ушел так сказать на покой так что ...
     
     
  • 3.99, Аноним (90), 23:25, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Слышал, что он родился в бороде =)
     

  • 1.23, Адекват (ok), 14:52, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как там в питоне с обратной совместимостью ? Ну софт написанный в версии 2.7 буде без проблем работать в текущей ?
     
     
  • 2.24, Аноним (19), 15:00, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    3 не совместим с 2. с добрым утром!
     
     
  • 3.27, RedEyedMan (ok), 15:01, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Гвидобейсик же. Будто так сложно переписать свою поделку.
     
     
  • 4.100, Аноним (90), 23:26, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ты серьезно. Даже если это байда для какой-то ерунды вроде Django то скорее всего не взлетит.
     
  • 3.31, Аноним (7), 15:08, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну можно писать так что будет совместимо. Только придётся ограничивать себя фичами примерно 3.2.
     
     
  • 4.123, a3k (?), 14:30, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Но в 2019 python2 для новых сервисов поддерживать не нужно. Даже через six.
     
  • 2.29, llolik (ok), 15:07, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Выпуск языка программирования Python 3.8
    > софт написанный в версии 2.7 буде без проблем работать
    > Адекват

    Оукей :) Минутка адекватности в треде </sarcasm>

     
  • 2.44, Аноним (48), 15:28, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отличная шутка в треде. Думаю одна из лучших.
     
  • 2.70, Аноним (70), 18:06, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    На нём и от 3.7 далеко не всё заработает
     

  • 1.26, RedEyedMan (ok), 15:00, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Эй, я еще на 3.7 не перешел, стоять!
     
     
  • 2.101, Аноним (90), 23:27, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо переживать ничего не изменилось. Все как было так и осталось добавили перделок.
    Вот в 3.9 будет реально круто, а тут пока так лайтовая шляпа.
     
     
  • 3.146, RedEyedMan (ok), 11:31, 31/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А что будет в 3.9? Добавят switch?)

    Имхо, в питоне многих раздражает GIL, но большего требовать динамического скриптового и смысла нет. Тыкаю вот в Golang. Знакомый отметил заметное ускорение выполнения кода по сравнению с питоном, похоже, это новая сишка для неосиляторов сишки.

     

  • 1.30, Аноним (30), 15:07, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Ждём когда скобки завезут.
     
     
  • 2.62, RedEyedMan (ok), 17:14, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Тебе на Java или С++
     
     
  • 3.71, Аноним (71), 18:07, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Скобки обязательно завезут.)))
     
  • 2.119, pr0gr4mm1st (?), 10:58, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >>> from __future__ import braces

      File "<stdin>", line 1
    SyntaxError: not a chance

    Ни единого шанса)

     

  • 1.32, Аноним (32), 15:09, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    continue в finally?
    Хм, а зачем? Для вложенных циклов?
     
     
  • 2.36, еплршн7щ (?), 15:14, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А зачем вообще finally?
     
     
  • 3.40, Аноним (32), 15:20, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну просто это странно.
    Например, мы словили исключение в теле цикла. Дошли до  finally, а там стоит continue, из-за которого сразу ибем на следующую итерацию.
    Ок.
    Вариант 2:
    Мы не словили исключения. Дошли до finally, .перешли к следующей итерации
    В итоге, код в теле цикла, написанный после finally, исполнен не будет никогда.
    Т.е это то же самое, как если бы не было никакого continue в finally, а просто сразу же заканчивалось тело цикла.
    Или я что-то не так понимаю?
     
     
  • 4.43, Аноним (7), 15:25, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По-моему тут написано что continue в try выполнит finally и только после этого перескочит в начало цикла. https://docs.python.org/3.8/reference/simple_stmts.html#continue
     
     
  • 5.45, Аноним (32), 15:28, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда да, тогда полезно
     
  • 4.46, Аноним (7), 15:29, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А тут написано что в finally continue было использовать нельзя, теперь как я понимаю можно https://docs.python.org/3.8/reference/compound_stmts.html#finally

    >заканчивалось тело цикла

    наверное дело в том что оно не обязано там заканчиваться и вообще это баг был

     
     
  • 5.53, Аноним (32), 15:41, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да оно и не обязано заканчиваться сразу после finally, по идее.
     
  • 5.124, letsmac (ok), 17:17, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А нафига оно там? Если exception в теле цикла - оно отработает следующую итерацию после блока. Совсем от криволапых наверное.
     

  • 1.33, vrm (?), 15:10, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда там уже 4.0 будет?
     
     
  • 2.35, Аноним (7), 15:13, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не раньше чем гил выпилят и джит запилят (предлагаю следующую версию назвать 6).
     
     
  • 3.69, rshadow (ok), 17:59, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    6 уже пробовали. Раку получилось.
     
  • 2.131, Анонимно (?), 00:08, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Когда найдут достаточное количество странностей которые можно запилить что бы поломать соместимость так же жестко как при переходе с двойки на тройку
     

  • 1.34, Агл (?), 15:13, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    а в плюсах можно в if делать что то вроде такого?
    if (std::cin >> int n >0)
    вот так можно:
    if (std::cin >> n, n > 0) но n должна быть объявлена ранее, а как все сделать в условной конструкции - и объявление переменной и >> и сравнение - возможно ли такое?
     
     
  • 2.51, iPony129412 (?), 15:40, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Можно, разрешаю

    https://skebanga.github.io/if-with-initializer/

     

  • 1.39, OpenEcho (?), 15:19, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Так глядишь, и ";" скоро завезут :)
     
     
  • 2.50, userd (ok), 15:38, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А что с ";", что её нужно завозить?
     
  • 2.52, Anonymoustus (ok), 15:40, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Так глядишь, и ";" скоро завезут :)

    А также три вида скобок. И отменят отступы.

     
     
  • 3.102, Аноним (90), 23:28, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да погоди ты там и так сейчас нихера не понятно вот {} это set или dict?
     
     
  • 4.110, Аноним84701 (ok), 00:01, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Да погоди ты там и так сейчас нихера не понятно вот {}
    > это set или dict?

    Все просто!
    [code]
    >>> print("{{}}:{} {{ ( ) }}:{}".format(type({}),type({()})))

    {}:<class 'dict'> { ( ) }:<class 'set'>
    [/code]
    ;)

     
  • 2.74, Евгений (??), 18:26, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>> print('Чувак');print('Ты всё проспал')

    Чувак
    Ты всё проспал

     
  • 2.80, Аноним84701 (ok), 20:03, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так глядишь, и ";" скоро завезут :)

    С разморозкой!
    https://docs.python.org/release/1.4/ref/ref2.html#HDR0 (1996)

    [code]
    The following tokens serve as delimiters in the grammar:
    (       )       [       ]       {       }
    ,       :       .       '       =       ; [/code]

     

  • 1.64, Аноним (64), 17:23, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это конец. Борщ в итоге, как С++.
     
  • 1.79, Ilya Indigo (ok), 19:34, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Поддержка операций присвоения внутри сложных выражений.

    В PHP 100 лет уже как и с обычным =
    В JS это завезите.

     
     
  • 2.82, Нонон (?), 21:15, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не надо такое в Js.. больше возможностей для говнокода


    Деструктуризация в js есть и хватит

     

  • 1.85, Аноним (85), 22:09, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >При помощи нового оператора ":="

    Самое отвратительное нововведение. Только нового синтаксиса для присвоения нам не хватало.

     
     
  • 2.91, Аноним (87), 22:56, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Самое отвратительное нововведение. Только нового синтаксиса для присвоения нам не хватало.

    А как лучше записать без нового синтаксиса вот это:

    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/ есть огромный список того, как НЕ НАДО делать. Но если ты всё равно пишешь говнокод, то такая конструкция позволяет написать его чуточку лучше.

     
     
  • 3.93, all_glory_to_the_hypnotoad (ok), 23:02, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    [ (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 приходится писать много лишних строк с промежуточными вычислениями, собственно это как раз примеры из текста новости.

     
  • 3.114, Аноним (85), 01:55, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >А как лучше записать без нового синтаксиса вот это:

    Во-первых, то что написано - это выстрел в ногу. Должно быть написано как-то так:

    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. Был бы в питоне := для присваиваний изначально - был бы он там же, где сейчас паскаль.

     
     
  • 4.129, Аноним (87), 22:30, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И мы получили 4 строки вместо одной А опыт показывает, что реальные живые прогр... текст свёрнут, показать
     
  • 2.103, Аноним (90), 23:29, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Радйся, что нет var, let и const. А у некоторых есть =)
     
     
  • 3.108, Аноним (108), 23:49, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    local, global и const - очень даже помогают. Впрочем, у некоторых идентификатор становится константой уже в том случае, если первая буква заглавная.
     
  • 3.125, letsmac (ok), 17:19, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да эти операторы, как раз помогают понять, чего  тут кто накатал.
     

  • 1.88, all_glory_to_the_hypnotoad (ok), 22:31, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Поддержка операций присвоения внутри сложных выражений. При помощи нового оператора ":=" появилась возможность выполнять операции присвоения значений внутри других выражений...

    Думал до Гвидо уже никогда не дойдёт, что его попытки заствить писать код просто методом синтаксической бедноты делают только хуже. Ещё бы до ноего дошло, что нужно порезать self, метапрограммирование и манки патчинг.

     
     
  • 2.104, Аноним (90), 23:33, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ещё бы до ноего дошло, что нужно порезать self, метапрограммирование и манки патчинг.

    self отличное решение, а вот множественное наследование и правдо надо убрать нахрен вместе с ООП. Вот живут на типах как-то в Swift и Golang и рады жизни.

    Метапрограммирвоание тоже херня какая-то зачем лазить в какие-то свойства черт знает чего там портить в обьектах.

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

    Черт С++ выходит какой-то динамический.

     
     
  • 3.106, Аноним (-), 23:40, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    иксперт, ничего сложней хеллоуворлда на пейтоне не писавший, детектед
     
  • 3.130, Анонимно (?), 00:06, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо запрещать наследование, надо запрещать множественное наследование как сделали в шарпах.
     
  • 2.109, Аноним (108), 23:50, 15/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Какой Гвидо? Если тот, который, то он уже год как не работает.
     
     
  • 3.111, Аноним (87), 00:20, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой Гвидо? Если тот, который, то он уже год как не работает.

    Когда это внедрялось — ещё работал. Это — его фича.

     
     
  • 4.122, Kurakofu (?), 12:30, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он был против. Из-за этой фичи он и ушёл как раз.
     
     
  • 5.128, Аноним (87), 22:17, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Он был против. Из-за этой фичи он и ушёл как раз.

    Это — его фича. Он стоит в авторах PEP 572, он искал примеры в исходниках dropbox-а, и он холиварил в рассылке. А его заплевали. Его это достало. Потому и ушёл.

     

  • 1.107, Аноним (87), 23:42, 15/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше бы они blist-ы добавили. Списки, где вставка, удаление, сложение и адресация по индексу O(1) — что может быть лучше? Но нет...
     
     
  • 2.126, letsmac (ok), 17:20, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пиши на Си. Там еще можно память выделять, как тебе нужно, а не как компилятору.
     
  • 2.134, all_glory_to_the_hypnotoad (ok), 07:46, 17/10/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Лучше бы они blist-ы добавили. Списки, где вставка, удаление, сложение и адресация по индексу O(1) — что может быть лучше?

    Случай, когда тебя нагрели напёрсточники, но ты ещё не понял как и рад до ушей

     
  • 2.143, rex (??), 09:15, 23/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    O(log n)
    https://pypi.org/project/blist/
     
     
  • 3.145, Аноним (87), 19:34, 23/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > O(log n)
    > https://pypi.org/project/blist/

    А у list-а там O(n). blist лучше же, не?

     

  • 1.116, Аноним (116), 08:05, 16/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В новости нет самого главного! Добавили 'functools.cached_property'.
     
  • 1.117, Tishka17 (?), 09:05, 16/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В тайпинге ещё одна важная вещь появилась: Protocol
     
     
  • 2.121, Аноним (121), 12:21, 16/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Еще Literal и Final, только они в typing_extensions уже сто лет как есть.
     

  • 1.133, Анонимно (?), 00:14, 17/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В 4 версии ждем Пайрутины или незачёт.
     
     
  • 2.139, Sly_tom_cat (ok), 14:54, 18/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тогда еще и pychan-ы нужны, без них pyroutine-ы не взлетят.
     
  • 2.144, rex (??), 09:20, 23/10/2019 [^] [^^] [^^^] [ответить]  
  • +/
    чем оно лучше yield-а?
     

  • 1.140, mumu (ok), 06:28, 19/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > while (block := f.read(256)) != '':

    При Гвидо такого перла не было :-(
    Rest in Peace sweet Python

     
     
  • 2.141, Аноним (87), 15:38, 20/10/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > При Гвидо такого перла не было :-(

    Гвидо — автор этого "перла".

     

  • 1.142, Андрей (??), 18:38, 21/10/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Любой язык со временем превращается в Perl
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру