Что нового в Python 3.8?

A

Android

Original poster
CEE37ADA-E14D-4AD7-94DD-1FA27C143201.png
Последняя версия Python скоро будет доступна, и мы составили список новых функций, о которых вам нужно знать.

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

В этом посте описаны наиболее важные дополнения и изменения, которые вы должны знать о Python 3.8. Взглянуть!

1. Оператор моржа

Выражения назначения пришли в Python с оператором «морж»: =. Это позволит вам присваивать значения переменной как часть выражения. Основным преимуществом этого является то, что он экономит некоторые строки кода, когда вы хотите использовать, скажем, значение выражения в последующем условии.

Итак, как то так:

длина = длина (my_list)
если длина> 10:
print (f "Список слишком длинный ({length} элементов, ожидается <= 10)")

Теперь можно написать так:

if (length: = len (my_list))> 10:
print (f "Список слишком длинный ({length} элементов, ожидается <= 10)")
Да, для краткости, но некоторые могут сказать, что это влияет на читабельность кода - можно утверждать, что первый вариант здесь более четкий и явный. Эта дискуссия была центром серьезного противоречия в сообществе Python.

2. Позиционные аргументы

Специальный маркер / теперь можно использовать при определении аргументов метода, чтобы указать, что функционал принимает только позиционные аргументы слева от маркера. Аргументы только для ключевых слов были доступны в Python с маркером * в функциях, а добавление / marker для аргументов только для позиционирования улучшает согласованность языка и позволяет создать надежную структуру API.

Возьмите пример этой функции:

def pow (x, y, z = нет, /):
г = х ** у
если z не None:
r% = z
возврат г
Маркер / здесь означает, что передача значений для x, y и z может выполняться только позиционно, без использования аргументов ключевых слов. Поведение иллюстрируется ниже:
>>> pow (2, 10) # действует
>>> pow (2, 10, 17) # действует
>>> pow (x = 2, y = 10) # недействителен, вызовет ошибку TypeError
>>> pow (2, 10, z = 17) # недействителен, вызовет ошибку TypeError
Более подробное объяснение мотивации и вариантов использования можно найти в PEP 570.

3. f-строки теперь поддерживают «=»

Программисты Python часто используют отладку в стиле «printf». В старые времена это было довольно многословно:

print "foo =", foo, "bar =", bar
F-строки делают это немного лучше:

print (f "foo = {foo} bar = {bar}")
Но вам все равно придется повторяться: вы должны написать строку «foo», а затем выражение «foo».

Спецификатор =, используемый как f '{expr =}', расширяется до текста выражения, знака равенства, а затем до выражения вычисляемого выражения. Теперь вы можете просто написать:

print (f "{foo =} {bar =}")
Небольшой шаг для языка, но гигантский скачок для всех, кто разбрасывает операторов print () для отладки!

4. reversed () теперь работает с dict

Начиная с Python 3.7, словари сохраняют порядок вставки ключей. Встроенный reversed () теперь можно использовать для доступа к словарю в обратном порядке вставки - точно так же, как OrderedDict.

>>> my_dict = dict (a = 1, b = 2)
>>> список (полностью измененный (my_dict))
['b', 'a']
>>> список (полностью измененный (my_dict.items ()))
[('b', 2), ('a', 1)]
5. Упрощенная повторяемая распаковка для возврата и выхода

Это непреднамеренное поведение существует с Python 3.2, который запрещает распаковывать итерируемые элементы без скобок в операторах return и yield.

Итак, было разрешено следующее:

def foo ():
отдых = (4, 5, 6)
t = 1, 2, 3, * отдых
возврат т
Но это привело к синтаксической ошибке:

def baz ():
отдых = (4, 5, 6)
возврат 1, 2, 3, * отдых
def baz ():
отдых = (4, 5, 6)
выход 1, 2, 3, * отдых
Последний выпуск исправляет это поведение, поэтому теперь разрешены два вышеуказанных подхода.

6. Новый синтаксис предупреждений

Интерпретатор Python теперь генерирует SyntaxWarning в некоторых случаях, когда пропущена запятая перед кортежем или списком. Поэтому, когда вы случайно делаете это:

данные = [
(1, 2, 3) # упс, пропущена запятая!
(4, 5, 6)
]
Вместо того, чтобы показывать TypeError: объект 'tuple' не вызывается, который на самом деле не говорит вам, что не так, будет показано полезное предупреждение, указывающее, что вы, вероятно, пропустили запятую. Довольно полезно при отладке!

Компилятор теперь также генерирует SyntaxWarning, когда проверки идентичности (есть и нет) используются с определенными типами литералов (например, строки, целые числа и т. Д.). Вы редко хотите сравнивать идентификаторы с литералами, отличными от None, и предупреждение компилятора может помочь избежать ряда неуловимых ошибок.

7. Улучшения производительности

В этом выпуске добавлен ряд повышений производительности интерпретатора в соответствии с предыдущим выпуском 3.7.

operator.itemgetter () теперь на 33% быстрее. Это стало возможным благодаря оптимизации обработки аргументов и добавления быстрого пути для общего случая одиночного неотрицательного целочисленного индекса в кортеж (что является типичным случаем использования в стандартной библиотеке).

Поиск в полях в коллекциях. Namedtuple () теперь более чем в два раза быстрее, что делает их самой быстрой формой поиска переменных экземпляра в Python.

Конструктор списка не перераспределяет внутренний буфер элементов, если итерация ввода имеет известную длину (ввод реализует len). Это делает созданный список на 12% меньше в среднем.

Запись в переменную класса теперь выполняется в два раза быстрее: при обновлении атрибута, не относящегося к объектам, произошел ненужный вызов для обновления слотов, что оптимизировано.

Вызов некоторых простых встроенных программ и методов теперь происходит на 20-50% быстрее. Затраты на преобразование аргументов в эти методы снижаются.
uuid.UUID теперь использует слоты для уменьшения объема используемой памяти.

Резюме:
Предстоящий выпуск Python добавляет несколько замечательных новых функций в язык и значительно повышает производительность благодаря фундаментальным исправлениям ускорения. Существует небольшое количество изменений в поведении, которые могут потребовать изменения существующего кода при обновлении до Python 3.8, но прирост производительности и новый синтаксис делают его полностью стоящим усилий. Подробный журнал изменений всего нового можно найти на их сайте.
 
Название темы
Автор Заголовок Раздел Ответы Дата
Support81 Фрод в рекламе: как мошенники крадут бюджеты и что с этим делать Новости в сети 0
wrangler65 Что такое централизованный финансы? Полезные статьи 0
Support81 Grok 3 покажут уже сегодня: что известно о главной новинке февраля Новости в сети 0
Support81 37 команд для атаки: что скрывает новый бэкдор FINALDRAFT Новости в сети 0
Support81 Сбой на ключевом интернет-узле в Москве: что произошло? Новости в сети 0
Support81 Россия вводит жесткие меры против киберпреступников: что изменится? Новости в сети 3
Ёшкин_кот Интересно Азбука начинающего хакера. "Что такое Google Dorks и с чем его едят" Полезные статьи 0
wrangler65 Интересно USDT гонят с европейских криптобирж: что делать владельцам стейблкоина Новости в сети 0
Support81 Решение Верховного Суда или поддержка Трампа: что определит судьбу TikTok? Новости в сети 0
Support81 Тесный союз Маска и Трампа: что скрывается за многомиллионной поддержкой? Новости в сети 0
Support81 Американцам советуют уходить в цифровое подполье: что происходит? Новости в сети 0
Support81 От кибератак до насилия над детьми: что скрывают участники Scattered Spider Новости в сети 0
Support81 Из инфлюенсеров в информаторы: что нужно знать владельцам страниц с 10 тысячами подписчиков Новости в сети 0
Support81 Что общего между F-16 и Tinder? Новая игра США на Ближнем Востоке Новости в сети 0
Ёшкин_кот Интересно Азбука начинающего хакера. "Что такое SQL injection" Уязвимости и взлом 0
Support81 Хомяк ест ваши деньги: за что на самом деле борются игроки Hamster Kombat Новости в сети 2
turbion0 Мошенники начали обзванивать людей от имени сотрудников банка и уверять, что у тех возникла просрочка по ипотеке. Новости в сети 1
Support81 Интересно Ученые доказали, что власть развращает даже самых честных Свободное общение и флейм 0
T что будет если в sandboxie открыть вирус ? Вопросы и интересы 1
turbion0 Мошенники убедили директора фирмы, что он «избранный», и обокрали его. Новости в сети 0
Emilio_Gaviriya Статья Что такое Responder. Уязвимости и взлом 0
El_IRBIS Интересно Что такое EaaS. Анонимность и приватность 0
Emilio_Gaviriya Статья AlienVault: Всё, что вам нужно знать о платформе для обнаружения угроз. Уязвимости и взлом 0
Emilio_Gaviriya Статья Конфигурация Kubernetes: Что это такое и зачем она нужна? Настройка системы для работы 0
Support81 82 участника, 1,3 миллиарда и...отсрочка: что происходит с российской платформой для обмена кодом Новости в сети 0
Emilio_Gaviriya Статья Что такое шифрование с открытым ключом. Анонимность и приватность 0
Emilio_Gaviriya Статья Что такое Kerberos. Уязвимости и взлом 0
Emilio_Gaviriya Статья Что такое Burp Suite. Уязвимости и взлом 0
Emilio_Gaviriya Статья Что такое OWASP Top Ten и с чем его едят. Уязвимости и взлом 0
Emilio_Gaviriya Статья Что такое OPSEC? Уязвимости и взлом 0
Emilio_Gaviriya Статья Что такое SQL-инъекции (ч.1). Уязвимости и взлом 0
Emilio_Gaviriya Интересно Что такое Pig. Другие ЯП 0
Emilio_Gaviriya Статья Разбираемся, что такое RAT. Вирусология 0
Emilio_Gaviriya Статья Что такое PKI. Анонимность и приватность 0
Emilio_Gaviriya Статья Что такое Malware-as-a-Service. Вирусология 0
Support81 ЦБ объявил войну кредитным мошенникам: что изменится для банков и клиентов Новости в сети 0
Emilio_Gaviriya Статья Что такое DLP и с чем его едят? Уязвимости и взлом 0
Ёшкин_кот Статья SeedPhrase Extractor - что это такое и с чем его едят. Полезные статьи 0
Emilio_Gaviriya Статья Права задержанного: что важно знать после задержания. Анонимность и приватность 0
Support81 Дистанционка под прицелом: должен ли работодатель сообщать, о том, что шпионит за вами Новости в сети 0
Support81 Силовики vs приватность: что стоит за новыми законами о персональных данных и почему бизнес бьет тревогу? Новости в сети 0
Support81 Литературный бум в мире киберпреступников: за что платят большие деньги? Новости в сети 0
Support81 Швейцарская иллюзия безопасности: что скрывает почтовый сервис ProtonMail от своих пользователей? Новости в сети 0
Support81 Россия вступает в гонку спутникового интернета: что нужно знать о проекте “Бюро 1440" Новости в сети 3
Gorsilov Подскажите что с етими базами делать? и Как? Вопросы и интересы 0
P Закрыто Продаю заюзанные наборы разных стран что с селфи что без. Корзина 1
DOMINUS Кибербуллинг: что это и как с этим бороться? Свободное общение и флейм 1
DOMINUS Интересно Причины избегать общественного Wi-Fi - Что может случиться? Полезные статьи 0
B Закрыто 306 000 000 строк Url;Login:Password - Найду все что хотите Корзина 1
Bluebird Draw Проверено Рисуем так, что верят везде. Отрисовка от Bluebird Ищу работу. Предлагаю свои услуги. 3

Название темы