10 классных функций Python 3.9 |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-11-22 12:02 Перевод подготовлен совместно с факультетом Python-разработки GeekBrains. Автор оригинального текста Farhad Malik. *** Как и большинство поклонников Python, я очень рад изучать и использовать новейшие функции. В этой статье будет представлен обзор возможностей Python 3.9, которые необходимо знать. Я ознакомился с примечаниями к выпуску, посмотрел обсуждения и составил исчерпывающий гайд о том, что из себя представляют эти функции и как они работают. *** Было добавлено несколько новых функций, включая объединение и обновление словарей, строковые методы и внедрение модуля zoneinfo. Также нам представили стабильный и высокопроизводительный парсер. Давайте разбираться с нововведениями. 1. Операторы обновления и слияния словарей Во встроенный класс | используется для объединения словарей, |= – для их обновления. PEP 584 Код: Объединение: Обновление: В случае конфликта ключей верным будет считаться крайнее правое значение. Это соответствует поведению аналогичных операций Более детально Как мы видим, добавлены новые операторы В Python 3.8 есть несколько способов слияния и обновления словарей. К примеру, можно использовать Также мы можем применить Этот способ не работает с подклассами Наконец, библиотека collections содержит функцию *** Для получения более подробной информации вы можете ознакомиться с источником. https://www.python.org/dev/peps/pep-0584 2. Новый высокопроизводительный парсер на основе PEG С Python 3.9 можно отказаться от использования LL (1) в пользу более гибкого и стабильного синтаксического анализатора на основе PEG. PEP: 617 Более детально Текущий парсер CPython основан на LL (1). Грамматика основана на LL (1), что позволяет парсить ее с помощью LL (1) анализатора. Парсер LL (1) работает сверху вниз и анализирует входные данные слева направо. Грамматика является контекстно-свободной, поэтому контекст токенов не учитывается. Python 3.9 предлагает заменить его новым парсером на основе PEG, который снимет ограничения Python грамматики LL (1). Будет удален ряд хаков, существующих в текущем синтаксическом анализаторе. В долгосрочной перспективе это снизит стоимость обслуживания. Несмотря на то, что синтаксические анализаторы и грамматики LL (1) просты в реализации, ограничения не позволяют им выражать общие конструкции естественным образом для разработчика языка и читателя. Парсер смотрит только на один токен вперед, чтобы различать возможности. Оператор выбора | упорядоченный. Рассмотрим следующее правило:
Контекстно-свободный парсер грамматики LL (1) будет генерировать конструкции, которые при заданной входной строке определят, нужно ли расширять A, B или C. Анализатор PEG отличается. Он проверит, успешна ли первая переменная, и только в случае провала перейдет ко второй или третьей. Парсер PEG генерирует ровно одно допустимое дерево для строки. Он определенный, в отличие парсер LL (1). Синтаксический анализатор PEG также напрямую генерирует узлы AST для правила через грамматические действия. За счет этого удается избежать создания промежуточных шагов. Парсер PEG был тщательно протестирован. У него отлажена производительность. Поэтому для большинства инструкций он расходует примерно 10% от объема памяти и вычислительных ресурсов текущего анализатора. Все благодаря тому, что не создается промежуточное синтаксическое дерево. *** Я опустил некоторые детали, чтобы не усложнять прочтение статьи. Для получения более подробной информации вы можете ознакомиться с источником. https://www.python.org/dev/peps/pep-0617 3. Новые строковые функции для удаления префикса и суффикса К объекту 1. Первая удаляет префикс – 2. Вторая удаляет суффикс – PEP: 616 Код: Более детально Одна из обыденных задач в приложении data science, которое включает в себя манипулирование текстом – удалить префикс/суффикс строк. Добавленные к объекту Как мы уже знаем, первая функция удаляет префикс. Это Строка – это набор символов, и каждый символ имеет индекс в строке. Индексы можно использовать вместе с Если мы говорим о функциях, они проверяют, начинается ли строка с префикса (заканчивается ли она суффиксом), и если да, то возвращают строку без префикса или после суффикса, используя функцию среза Поскольку эти функции являются частью стандартной библиотеки, мы получаем согласованный, менее хрупкий, высокопроизводительный и более наглядный API. *** Для получения более подробной информации вы можете ознакомиться с источником. https://www.python.org/dev/peps/pep-0616 4. Подсказки типов для встроенных универсальных типов Аннотирование программ стало проще за счет удаления иерархии параллельных типов в Python. Добавлена поддержка универсального синтаксиса во всех стандартных коллекциях, доступных в модуле набора текста. Мы можем использовать встроенные типы коллекций Код стал выглядеть чище, а его понимание и объяснение упростилось. PEP: 585 Более детально Несмотря на то, что Python – это язык с динамической типизацией, аннотация типов в программе позволяет проводить самоанализ. Впоследствии аннотацию можно использовать для создания API проверки типов во время выполнения. Как я говорил ранее, в Python 3.9 добавили поддержку универсального синтаксиса во всех стандартных коллекциях, доступных в модуле набора текста. Универсальный тип – это обычно контейнер, к примеру Мы можем использовать встроенные типы коллекций Например, мы могли бы управлять проверкой типов среды выполнения Python, аннотируя код: Ряд функций статической типизации был постепенно построен поверх существующей среды выполнения Python. Некоторые из них были ограничены существующим синтаксисом и поведением во время выполнения. Поэтому в модуле типизации возникла дублированная иерархия коллекций из-за дженериков. Например, мы увидим *** Для получения более подробной информации вы можете ознакомиться с источником. https://www.python.org/dev/peps/pep-0585 5. Поддержка часового пояса IANA в DateTime Модуль PEP: 615 Часовые пояса IANA часто называют
Если мы передадим неверный ключ, возникнет ошибка Более детально Библиотека В большинстве случаев нужно просто установить объект и его часовой пояс: UTC, локальный часовой пояс системы, или часовой пояс IANA. Можно создать объект Код: *** Для получения более подробной информации вы можете ознакомиться с источником. https://www.python.org/dev/peps/pep-0615 6. Возможность отмены одновременных фьючерсов. В Он отменяет все отложенные фьючерсы, которые не были запущены. До версии 3.9 процесс ожидал их завершения перед завершением работы исполнителя. Пояснение Новый параметр При выполнении Когда не остается незавершенных рабочих элементов, он завершает работу. *** Для получения более подробной информации вы можете ознакомиться с источником. https://bugs.python.org/issue30966 7. Улучшения AsyncIO и многопроцессорности В библиотеку Например: 1. Параметр 2. Добавлены новые сопрограммы: Что касается улучшений библиотеки многопроцессорности, в класс Этот метод точно закрывает очередь. Это гарантирует, что очередь будет закрыта и не останется дольше ожидаемого. Помните, что методы *** Для получения более подробной информации вы можете ознакомиться с источником. https://bugs.python.org/issue30966 8. Постоянные ошибки импорта пакетов Основная проблема импортирования библиотек Python заключалась в несогласованном поведении, когда относительный импорт проходил мимо пакета верхнего уровня. Встроенная функция Теперь это исправили. *** Для получения более подробной информации вы можете ознакомиться с источником. https://bugs.python.org/issue37444 9. Генерация случайных байтов Еще одна функция, добавленная в версии 3.9 – Можно генерировать случайные числа, но что, если нужно генерировать случайные байты? Раньше разработчикам приходилось для этого проявлять изобретательность. Хотя можно использовать К примеру, чтобы гарантировать, что случайные числа генерируются с ожидаемым поведением и процесс воспроизводится, обычно используется модуль В результате был введен метод *** Для получения более подробной информации вы можете ознакомиться с источником. https://bugs.python.org/issue40286 10. Исправление функции замены строки Раньше Этот баг сбивал с толку пользователей и приводил к нестабильному поведению приложений. В Python 3.9 проблема была устранена, и теперь функция замены совместима с Работает она следующим образом: для заданного максимального аргумента вхождения замены, набор символов из строки заменяется новым набором символов:
В этом случае возвращается копия строки s со всеми вхождениями старой подстроки, замененной на новую. Если указан необязательный аргумент maxreplace, заменяются первые экземпляры maxreplace. До этого функция replace имела непоследовательное поведение Теперь: В Python 3.9 также был исключен ряд избыточных функций, таких как Если вы хотите узнать больше об этих улучшениях, прочтите официальное руководство здесь. *** Нововведения в популярном языке программирования можно изучить самостоятельно, но придется потратить много времени и сил на поиск и систематизацию информации. Если ваш опыт в профессии еще не так велик, обратите внимание на факультет Python-разработки GeekBrains. Под руководством опытных преподавателей вы получите необходимые знания, а успешно завершившим обучение студентам онлайн-академия поможет с трудоустройством. Интересно, хочу попробовать Источники Источник: proglib.io Комментарии: |
|