Python е интерпретиран език за програмиране на високо ниво, чиято философия набляга на четливостта на неговия код.
След една година на развитие, е публикувана новата версия на езика за програмиране Python 3.11, новият клон ще бъде поддържан за година и половина, след което ще се формират пачове с уязвимости за още три години и половина.
В същото време започна алфа тестване на клона Python 3.12 (според новия график за разработка, работата по нов клон започва пет месеца преди пускането на предишния клон и достига алфа тестване по време на следващата версия).
Клонът на Python 3.12 ще бъде в алфа версии за седем месеца, през които ще бъдат добавени нови функции и коригирани грешки. След това ще се проведе бета тестване в продължение на три месеца, през които добавянето на нови функции ще бъде забранено и ще се обърне пълно внимание на корекциите на грешки. Последните два месеца преди стартирането клонът ще бъде в етап кандидат за стартиране, в който момент ще се извърши окончателното стабилизиране.
Основни нови функции на Python 3.11
В тази нова версия Беше извършена значителна работа за оптимизиране на производителността, тъй като новият клон включва свързани промени с ускорение и вградено внедряване на извиквания на функции, използването на бързи интерпретатори на типични операции, както и оптимизации, изготвени от проектите Cinder и HotPy. В зависимост от вида на натоварването, скоростта на изпълнение на кода нараства между 10% и 60%. Средно производителността при преминаване на пакета от тестове за pyperformance се увеличи с 25%.
Механизмът за кеширане е преработен байт код, което намали времето за стартиране на интерпретатора с 10-15%. Обектите с код и байт-код вече са статично разпределени от интерпретатора, което направи възможно елиминирането на стъпките за разкриване на байт-код, извлечен от кеша, и преобразуване на обекти с код, за да бъдат поставени в куп памет.
Добавено поддръжка за групи изключения, което дава възможност на програмата да повдига и обработва няколко различни изключения едновременно. Предлагат се нови типове изключения ExceptionGroup и BaseExceptionGroup за групиране на множество изключения заедно, а изразът „except*“ се добавя за отделяне на изключения от група.
Добавен е специален тип LiteralString толкова сама може да включва литерални низове, които са съвместими с типа LiteralString (тоест голи низове и низове от тип LiteralString, но не произволни или смесени низове от тип str). Типът LiteralString може да се използва за ограничаване на предаването на аргументи на низ към функции, произволно заместване на части от низове, където може да доведе до уязвимости, например при генериране на низове за SQL заявки или команди на обвивката.
В допълнение към това също осигурена е възможност за маркиране на отделни елементи от речници (TypedDict) с флагове Required и Not Required за определяне на задължителни и незадължителни полета (по подразбиране всички декларирани полета са задължителни, ако общият параметър не е зададен на Фалшив).
Добавен @dataclass_transform клас, метод и декоратор на функции, когато е указано, инструментът за проверка на статичен тип третира обекта, сякаш използва декоратора @dataclasses.dataclass.
От останалите промени, които се открояват в тази нова версия:
- Добавена е възможност за използване на атомно групиране ((?>…)) и ревниви (притежаващи) квантори (*+, ++, ?+, {m,n}+) в регулярни изрази.
- Добавен е типът TypeVarTuple, който позволява използването на променливи генерици, за разлика от TypeVar, който обхваща не един тип, а произволен брой типове.
- Стандартната библиотека включва модула tomllib с функции за анализиране на TOML формата.
- Методът add_note() е добавен към класа BaseException, който позволява текстова бележка да бъде прикачена към изключението, например за добавяне на контекстна информация, която не е била налична по време на хвърлянето на изключението.
- Добавен е специален тип Self за представяне на текущия частен клас. Self може да се използва за анотиране на методи, които връщат екземпляр от вашия клас по по-лесен начин от използването на TypeVar.
- Добавена е опция за команден ред "-P" и променлива на средата PYTHONSAFEPATH за деактивиране на автоматичното свързване на потенциално опасни файлови пътища към sys.path.
- Помощната програма py.exe за платформата Windows е значително подобрена, за да поддържа синтаксиса "-V:". / " в допълнение към "- . ».
- Много C API макроси са преобразувани в обикновени или статични вградени функции
- Модулите uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau са отхвърлени и ще бъдат премахнати от Python. 3.13 издание.
- Премахнати функции PyUnicode_Encode*.
- Класът TaskGroup беше добавен към модула asyncio с внедряването на асинхронен контекстен мениджър, който чака групата задачи да завърши.
- Добавянето на задачи към група става чрез метода create_task().
Накрая ако се интересувате да научите повече за това, можете да проверите подробностите в следната връзка.