The OpenNET Project / Index page

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

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

24.10.2022 22:53

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

Одновременно началось альфа-тестирование ветки Python 3.12 (в соответствии с новым графиком разработки работа над новой веткой начинается за пять месяцев до релиза предыдущей ветки и к моменту очередного релиза достигает стадии альфа-тестирования). Ветка Python 3.12 будет находиться на стадии альфа-выпусков в течение семи месяцев, во время которых будут добавляться новые возможности и производиться исправление ошибок. После этого в течение трёх месяцев будет проводиться тестирование бета-версий, во время которого добавление новых возможностей будет запрещено и всё внимание будет уделяться исправлению ошибок. Последние два месяца перед релизом ветка будет находиться на стадии кандидата в релизы, на которой будет выполнена финальная стабилизация.

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

  • Проведена значительная работа по оптимизации производительности. В новую ветку включены изменения, связанные с ускорением и inline-развёртыванием вызова функций, применением быстрых интерпретаторов типовых операций (x+x, x*x, x-x, a[i], a[i] = z, f(arg) C(arg), o.method(), o.attr = z, *seq), а также оптимизациями, подготовленными проектами Cinder и HotPy. В зависимости от вида нагрузки отмечается прирост скорости выполнения кода на 10-60%. В среднем производительность при прохождении тестового набора pyperformance увеличилась на 25%.

    Переработан механизм кэширования байткода, что позволило сократить время запуска интерпретатора на 10-15%. Объекты с кодом и байткод теперь статически разамещаются интерпретатором, что дало возможность исключить стадии демаршалинга извлечённого из кэша байткода и преобразования объектов с кодом для размещения в динамической памяти.

  • При отображении трассировки вызовов в диагностических сообщениях обеспечен вывод информации о выражении, из-за которого возникла ошибка (ранее подсвечивалась лишь строка без детализации, какая именно часть строки стала причиной ошибки). Расширенную информацию о трассировке также можно получить через API и использовать для сопоставления отдельных инструкций байткода с конкретной позицией в исходном коде, используя метод codeobject.co_positions() или функцию C API PyCode_Addr2Location(). Изменение существенно упрощает отладку проблем, связанных с вложенными объектами словарей, множественными вызовами функций и сложными арифметическими выражениями.
    
       Traceback (most recent call last):
         File "calculation.py", line 54, in 
           result = (x / y / z) * (a / b / c)
                     ~~~~~~^~~
       ZeroDivisionError: division by zero
    
  • Добавлена поддержка групп исключений, дающих программе возможность генерировать и обрабатывать сразу несколько разных исключений одновременно. Для группировки нескольких исключений и их совместного вызова предложены новые типы исключений ExceptionGroup и BaseExceptionGroup, а для выделения отдельных исключений из группы добавлено выражение "except*".
  • В класс BaseException добавлен метод add_note(), позволяющий прикрепить текстовое примечание к исключению, например, добавить контекстную информацию, недоступную во время генерации исключения.
  • Добавлен специальный тип Self, представляющий текущий закрытый класс. Self может применяться для аннотирования методов, возвращающих экземпляр своего класса, более простым путём, чем при использовании TypeVar.
    
       class MyLock:
           def __enter__(self) -> Self:
               self.lock()
               return self
    
  • Добавлен специальный тип LiteralString, который может включать только строковые литералы, совместимые с типом LiteralString (т.е. голые строки и строки с типом LiteralString, но не произвольные и не комбинированные строки с типом str). Тип LiteralString можно использовать для ограничения передачи функциям строковых аргументов, произвольная подстановка частей строк в которых может привести к уязвимостям, например, при формировании строк для SQL-запросов или shell-команд.
    
       def run_query(sql: LiteralString) -> ...
           ...
    
       def caller(
           arbitrary_string: str,
           query_string: LiteralString,
           table_name: LiteralString,
       ) -> None:
           run_query("SELECT * FROM students")  # ok
           run_query(literal_string)  # ok
           run_query("SELECT * FROM " + literal_string)  # ok
           run_query(arbitrary_string)  # Ошибка
           run_query(  # Ошибка
               f"SELECT * FROM students WHERE name = {arbitrary_string}"
           )
    
  • Добавлен тип TypeVarTuple, позволяющий использовать вариативные дженерики, в отличие от TypeVar охватывающие не один тип, а произвольное число типов.
  • В стандартную библиотеку включён модуль tomllib с функциями для разбора формата TOML.
  • Предоставлена возможность пометки отдельных элементов типизованных словарей (TypedDict) метками Required и NotRequired для определения обязательных и не обязательных полей (по умолчанию все объявленные поля обязательны для заполнения, если параметр total не выставлен в значение False).
    
       class Movie(TypedDict):
          title: str
          year: NotRequired[int]
    
       m1: Movie = {"title": "Black Panther", "year": 2018}  # OK
       m2: Movie = {"title": "Star Wars"}  # OK (поле year необязательное)
       m3: Movie = {"year": 2022}  # Ошибка, не заполнено обязательное поле title)
    
  • В модуль asyncio добавлен класс TaskGroup с реализацией асинхронного контекстного менеджера, ожидающего завершения группы задач. Добавление задач в группу осуществляется при помощи метода create_task().
    
       async def main():
           async with asyncio.TaskGroup() as tg:
               task1 = tg.create_task(some_coro(...))
               task2 = tg.create_task(another_coro(...))
           print("Both tasks have completed now.")
    
  • Добавлен декоратор классов, методов и функций @dataclass_transform, при указании которого система проверки статических типов трактует объект как при использовании декоратора @dataclasses.dataclass. В примере ниже класс CustomerModel при проверке типов будет обработан по аналогии с классом с декоратором @dataclasses.dataclass, т.е. как имеющий метод __init__, допускающий переменные id и name.
    
       @dataclass_transform()
       class ModelBase: ...
    
       class CustomerModel(ModelBase):
           id: int
           name: str
    
  • В регулярных выражениях добавлена возможность использования атомарной группировки ((?>…)) и ревнивых (possessive) квантификаторов (*+, ++, ?+, {m,n}+).
  • Добавлена опция командной строки "-P" и переменная окружения PYTHONSAFEPATH для отключения автоматического прикрепления к sys.path потенциально небезопасных файловых путей.
  • Значительно улучшена утилита py.exe для платформы Windows, в которой реализована поддержка синтаксиса "-V:<company>/<tag>" в дополнение к "-<major>.<minor>".
  • Многие макросы в C API преобразованы в обычные или статические inline-функции.
  • Объявлены устаревшими и будут удалены в выпуске Python 3.13 модули uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau. Удалены функции PyUnicode_Encode*.


  1. Главная ссылка к новости (https://blog.python.org/2022/1...)
  2. OpenNews: Выпуск языка программирования Python 3.10
  3. OpenNews: Уязвимость в Python, позволяющая вызвать системные команды из изолированных скриптов
  4. OpenNews: В основной ветке Python появилась возможность сборки для работы в браузере
  5. OpenNews: Представлен Pyston-lite, JIT-компилятор для штатного Python
  6. OpenNews: Гвидо ван Россум намерен достигнуть двукратного увеличения производительности в CPython 3.11
Лицензия: CC-BY
Тип: Интересно / Программы
Короткая ссылка: https://opennet.ru/57971-python
Ключевые слова: python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (91) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:12, 24/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А после the пенсионера кто теперь главный?
     
     
  • 2.3, Аноним (3), 23:23, 24/10/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Там теперь демократия и правит невидимая рука рынка, вставленная сам понимаешь куда и кому.
     
     
  • 3.41, Жироватт (ok), 08:14, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И кого на этот раз рыночек порешал?
     
     
  • 4.98, Аноним (-), 03:34, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И кого на этот раз рыночек порешал?

    Гвидошку же, ну. Не насмерть, но разруливать гадюшню он задолбался.

     
  • 3.117, Аноним (117), 16:19, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вполне себе видимая — вот поддержку седьмой шинды убрали, только 10/11 теперь. Купляйце!
     

  • 1.5, Смузихлёб (ok), 23:38, 24/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    И когда это всё учить? В своё личное время?
     
     
  • 2.28, Ruslan22 (?), 02:40, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да. И это в порядке вещей. Кому не нравится проходят мимо.
     
     
  • 3.34, Бывалый смузихлёб (?), 06:43, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +16 +/
    В порядке вещей когда изменений немного и в целом ЯП весьма простой. В былые времена некоторые полюбили питон за это

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

    Ещё немного и «требуется гораздо более простой и наглядный ЯП» но теперь уже взамен питона

     
     
  • 4.37, beck (??), 07:36, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Соглашусь. Прелесть питона в его простоте и прозрачности. Зачем делать из питона плюсы, если уже есть плюсы? Нешто затем, чтобы не переписывать на плюсах прототипы, а продолжать питонокодить кудрявыми руками тех же кодеманкисов?
     
     
  • 5.40, Аноним (40), 08:11, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не нравятся нововведения - пишите по старому
     
     
  • 6.99, Аноним (-), 03:35, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не нравятся нововведения - пишите по старому

    А это по старой питонячьей традиции наверное уже сломали. А если еще не - скоро сломают.

     
     
  • 7.130, Вячеслав (??), 05:47, 27/10/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет такой традиции.
     
     
  • 8.143, Василий (??), 00:45, 31/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Их W Ее там нет ... текст свёрнут, показать
     
  • 6.144, Василий (??), 00:50, 31/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Не нравятся нововведения - пишите по старому

    Надо не просто писать по-старому, а активно и громко хейтить нововведения, дабы переорать слишком прогрессивных юношей^W особей неопределенного пола

     
  • 4.43, Аноним (43), 08:31, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это ты точно про питон подумал? Потому что всё, что делают в питоне, это упрощают и стандартизируют давние решения для популярных проблем. Которых уже накопилось прилично. А видимых изменений не так чтобы и много, разве что регулярно упрощают синтаксис и повышают читаемость.
     
  • 2.80, Аноним (80), 15:49, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что поделать, узкая специализация симптом эволюции.
     
     
  • 3.100, Аноним (-), 03:36, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Что поделать, узкая специализация симптом эволюции.

    Расскажешь куда твои плагинчики-питончики девать в случае какого-нибудь апокалиптеца. А кто-нибудь другой расскажет про эволюцию, но уже не тебе.

     
  • 3.145, Аноним (145), 00:52, 31/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > синдром

    Пофиксил.

     
  • 2.107, Аноним (107), 09:50, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Не говори, сколько времени от пива за теликом отберёт.
     
     
  • 3.146, Аноним (145), 00:55, 31/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Про диван забыл сказать. И бутылку.
     
  • 2.137, Вы забыли заполнить поле Name (?), 03:24, 28/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > И когда это всё учить? В своё личное время?

    Учиться! Учиться! И еще раз учиться! (с)

    А что, собственно, тебя как любителя раста удивляет? Настоящего хипстера всегда радуют любые нововведения или... Смузихлеб то, не настоящий!

     
     
  • 3.147, Аноним (145), 00:56, 31/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Учиться! Учиться! И еще раз учиться! (с)

    Чтобы что?

     

  • 1.10, zog (??), 00:00, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    Следующая версия будет называться Python 95.
     
  • 1.13, Аноним (13), 00:07, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    conda create -c conda-forge -n py311 python=3.11
    PackagesNotFoundError: The following packages are not available from current channels:
      - python=3.11

    Ждем ебилдов.

     
     
  • 2.54, Анонимыч (?), 10:47, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Та подождите,я еще Раст собираю...
     
     
  • 3.138, Вы забыли заполнить поле Name (?), 03:37, 28/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Та подождите,я еще Раст собираю...

    Помянем.

     

  • 1.33, Аноним (33), 05:41, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    отличный, проверенный временем ЯП!
     
     
  • 2.82, Аноним (82), 16:12, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Проверенный миллионами мух
     
     
  • 3.139, Вы забыли заполнить поле Name (?), 03:42, 28/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Проверенный миллионами мух

    И вот когда все мухи писали на питоне, одна маленькая, но гордая муха сказала: "Лично я буду писать на другом языке".
    Она стала писать все больше и больше, но очень скоро завязла и не смогла выполнить задачу.
    Так выпьем за то, чтобы никто из нас, на чем бы он не писал, никогда не отрывался бы от коллектива.

     

  • 1.35, Иваня (?), 07:15, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Один из моих любимых ЯП, ура! Надо обновиться и опробовать все фичи с сахаром на практике. =^..^=
     
  • 1.36, Аноним (36), 07:25, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Python 3.11 for Workgroups
     
     
  • 2.42, Жироватт (ok), 08:16, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Python 3.11 Нерабочий труп
     
     
  • 3.75, Аноним (75), 15:05, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Классика на все времена.
     
  • 3.104, Аноним (107), 08:10, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё про PHP что-нибудь скажите.
     
     
  • 4.121, Аноним (-), 18:03, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Тройка была полностью переписана с нуля, ибо была полное г-но. Сойдет ?
     

  • 1.38, Igraine (ok), 07:56, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже в python сделали дженерики, а в php с его настоящими статическими типами, дженериков нет.
     
     
  • 2.122, BuildPrice (?), 18:17, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Даже в python сделали помойку (нет, он уже 20 лет помоечней PERLа, а по скорости все еще в попе)
     
     
  • 3.140, Вы забыли заполнить поле Name (?), 03:44, 28/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > PERLа

    Это который стал раком с эмблеммой в виде накуренной бабочки?

     
  • 2.141, anonymous (??), 16:12, 29/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых в самом пхп нет статической проверки типов, там просто сахар для ассертов в рантайме.
    Во-вторых есть phpstan/psalm, которые как раз реализуют статческую проверку типов и там генерики уже давно есть.
     

  • 1.39, Аноним (39), 08:11, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Объявлены устаревшими и будут удалены в выпуске Python 3.13 модули uu...

    uu-то им чем помешал?

     
     
  • 2.44, Аноним (-), 08:37, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    он же давно тут https://docs.python.org/3/library/binascii.html
     
     
  • 3.58, Аноним (58), 12:21, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А чем он на старом месте мешает?
     
  • 3.77, Аноним (39), 15:09, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При этом в справке и 3.12, и 3.12 написано:

    > Normally, you will not use these functions directly but use wrapper modules like uu or base64 instead.

     

  • 1.46, Аноним (46), 08:48, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Пора кроме выражения "синтаксический сахар" вводить выражение "синтаксический жир".
     
     
  • 2.78, myhand (ok), 15:33, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Что конкретно благородный дон хотел предъявить?
     
     
  • 3.86, Аноним (46), 18:36, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да так, вообще и в целом... аннотации типов, которые сам язык в рантайме не использует, курс на из#$бистость синтаксиса... а GIL так и не убрали, ироды! [потрясает клюкой]
     
     
  • 4.102, myhand (ok), 03:53, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Да так, вообще и в целом... аннотации типов, которые сам язык в
    > рантайме не использует

    Это динамический язык, Карл!

    > курс на из#$бистость синтаксиса...

    *#$*??

     
     
  • 5.105, Аноним (105), 08:15, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это динамический язык, Карл!

    И таки шо, Фридрих, динамическому языку нельзя проверять типы?
    Давайте ещё isinstance(), type() и прочие, в т.ч. подкапотные проверки из него выкинем, чтоб ловчее себе в ногу стрелять.
    Он же всё равно скрипт не "с колёс" исполняет, а в байт-код переводит сначала. И некоторая проверка типов (вроде "нельзя складывать строку с целым") там уже производится.
    Вот была б у интертрепатора опция "строгая проверка типов по аннотациям"...
    Без неё - поведение "как раньше", с ней - чтоб лаялось, как бешеное.
    А то иногда слегка так раздражают в рантайме внезапные грабли, которые могли быть отловлены ещё на стадии разбора скрипта интертрепатором.

     
     
  • 6.106, myhand (ok), 09:18, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем это делать в рантайме Зачем Они не подкапотные - а как раз у всех на ви... большой текст свёрнут, показать
     
     
  • 7.120, Аноним (105), 17:39, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> И некоторая проверка типов (вроде "нельзя складывать строку с
    >> целым") там уже производится.
    > Сильно сомневаюсь.

    Запускаю idle. Говорю:

    a = 1
    b = "x"
    print(a + b)

    в ответ: "TypeError: unsupported operand type(s) for +: 'int' and 'str'"
    В вашем варианте (без print) интерпретатор просто отбрасывал выражение, т.к. его результат никак не использовался.

    >> А то иногда слегка так раздражают в рантайме внезапные грабли, которые могли
    >> быть отловлены ещё на стадии разбора скрипта интертрепатором.
    > Для этого есть хорошие текстовые редакторы, умеющие взаимодействовать с mypy.  Emacs, например.

    В Emacs уже есть текстовый редактор?

     
     
  • 8.129, myhand (ok), 04:38, 27/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Молодец, юнга Это как раз ошибка от рантайма В чем можно легко убедиться __... большой текст свёрнут, показать
     
  • 3.101, Аноним (-), 03:37, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Что конкретно благородный дон хотел предъявить?

    Наверное синтаксис которым можно даже видавшего виды плюсовика напугать.

     
     
  • 4.103, myhand (ok), 03:55, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Приплюснутый синтаксис навсегда губит в человеке чувство прекрасного.
     
     
  • 5.109, Аноним (107), 09:58, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы поосторожней, тут же все сишники. Которые два десятка ключевых слов выучили.
     
     
  • 6.116, myhand (ok), 13:29, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Вы поосторожней, тут же все сишники. Которые два десятка ключевых слов выучили.

    Настоящий сишник ненавидит отродие Страуструпа.  Он не может иначе.  А "все" - знают куды иттить.

     
  • 2.136, Michael Shigorin (ok), 23:05, 27/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ...а затем объединить в "синтоксическую сгущёнку"?
     

  • 1.47, 1 (??), 09:05, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А он совместим с предыдущей версией ?
     
     
  • 2.48, commiethebeastie (ok), 09:56, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Запуск loop вне асинхронного контекста удалили.
     

  • 1.49, Аноним (49), 10:03, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >(ранее подсвечивалась лишь строка без детализации, какая именно часть строки стала причиной ошибки).

    У меня в Jupiter подсвечивалось выражение, но с жуткими тормозами. Они что там хак какой-то нагородили, чтобы обойти эту проблему?

     
     
  • 2.79, myhand (ok), 15:38, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то в whatsnew ссылка на PEP и патчи.  Флаг в руки.  Походу хак был как раз в Jupyter.
     

  • 1.50, Аноним (49), 10:05, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В стандартную библиотеку включён модуль tomllib с функциями для разбора формата TOML.

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

     
  • 1.51, Аноним (49), 10:08, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлен специальный тип LiteralString, который может включать только строковые литералы, совместимые с типом LiteralString (т.е. голые строки и строки с типом LiteralString, но не произвольные и не комбинированные строки с типом str). Тип LiteralString можно использовать для ограничения передачи функциям строковых аргументов, произвольная подстановка частей строк в которых может привести к уязвимостям, например, при формировании строк для SQL-запросов или shell-команд.

    Такие проблемы должны детектироваться проверкой загрязнений (taint checking), а не некорректными костылями, которые теперь хрен выпилишь.

     
     
  • 2.89, Аноним (89), 19:50, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это он и есть
     

  • 1.52, Аноним (49), 10:12, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    >TypedDict

    NIH-синдром. Для такого должна использоваться JSONSchema. И используется, кстати, в адекватных проектах. Даже есть статический компилятор. Что мешало внедрить в mypy поддержку JSONSchema, а в typing - просто тип-обёртку?

     
     
  • 2.64, Ыыыыыы (?), 13:51, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну давай опиши в Json схеме встроенный питонячий класс.
     

  • 1.53, Аноним (49), 10:14, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Многие макросы в C API преобразованы в обычные или статические inline-функции.

    Ну хоть кто-то это ретроградство начал упразднять.

     
     
  • 2.55, Аноним (43), 11:40, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Наоборот же, макросы -- это модно, и смузи-молодёжно.
     
     
  • 3.59, Аноним (-), 12:32, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У растаманов макросы в моде. А Питон слишклм высокоуровневый чтобы иметь маркосы. Исходяк Питона выполняется на виртуальной машине, Питон же некомпилируемый язык.
     
     
  • 4.76, Аноним (75), 15:07, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Найдутся те кто сделают внешний пакет и реализует это нативно потому что могут.
     
  • 3.110, Аноним (107), 10:01, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    #define не даст соврать!
     

  • 1.60, Аноним (-), 12:33, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жду недождусь когда всю 3-тью ветку объявят устаревшим и запилят 4-тую версию. Во будет смех и срачь.
     
     
  • 2.91, BrainFucker (ok), 20:31, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Жду недождусь когда всю 3-тью ветку объявят устаревшим и запилят 4-тую версию.

    И сделают Cython дефолтной реализацией вместо Cpython.

     

  • 1.65, Ыыыыыы (?), 13:53, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В предыдущей версии вроде как раз было падение производительности на 25% из-за нового lpeg парсера. Таким образом, производительность не поменялась по сравнению с версией 3.9?
     
     
  • 2.74, Аноним (75), 15:04, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А куда ты торопишься? Если тебе так нужна скорость, то питон тебе не нужен.
     
     
  • 3.81, Аноним (82), 16:11, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если не нужна скорость, может быть можно сделать питон еще медленнее?
     
     
  • 4.90, Аноним (89), 19:59, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если он от этого станет лучше, то да.
     
  • 4.92, Аноним (92), 21:47, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так и сделали, добро пожаловать в реальный мир.
     
  • 3.97, Вы забыли заполнить поле Name (?), 23:43, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Давай я у тебя зарплату урежу на 25%, а потом верну как было. Скажешь всем, что тебя повысили.
     
  • 2.83, worldmind (?), 16:21, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Скорость чего зависит от парсера?
     
     
  • 3.93, Аноним (92), 21:47, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Парсинга.
     
     
  • 4.111, Аноним (107), 10:02, 26/10/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А я люблю парсить. Как просыпаюсь, так начинаю парсить, хлебом не корми.
     

  • 1.87, Anonymoustus (ok), 19:20, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://www.python.org/community/diversity/

     
  • 1.88, Аноним (88), 19:23, 25/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    когда уже выпустят питон 4?
    больше функций пробелам!!
     
     
  • 2.94, Аноним (92), 21:48, 25/10/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Его не будет.
     
  • 2.150, Аноним (150), 21:29, 01/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Можно заменить def на 2 пустых строки. Удобно, модно, прогрессивно
     

  • 1.112, freecoder (ok), 10:42, 26/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    f(arg) [b]C(arg), o[/b].method()
    Совпадение? Не думаю!
     
  • 1.119, LastOf (?), 16:49, 26/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    скорость работы улучшили или как обычно ухудшили чтобы исправить в будущих неопределенных выпусках?!
     
  • 1.123, BuildPrice (?), 18:26, 26/10/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Больше декораторов, больше наследований. Нам некогда ждать - херч по квадратам, херч в прод, а потом три неделе ищи откуда идут зависимисти.  
     
     
  • 2.128, Вы забыли заполнить поле Name (?), 03:15, 27/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Про какие декораторы речь? Кто тебя заставляет городить наследование? При чем тут зависимости?
     
     
  • 3.132, Вячеслав (??), 06:52, 27/10/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так может у него тимлид пулреквесты без наследования с декораторами не принимает.
     

  • 1.151, Аноним (151), 02:57, 03/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В стандартную библиотеку включён модуль tomllib с функциями для разбора формата TOML.

    А обратная совместимость где? Нет же в PyPi этой библиотеки для установки через PIP. Вот что за люди...

     

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



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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