Что нового в 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, но прирост производительности и новый синтаксис делают его полностью стоящим усилий. Подробный журнал изменений всего нового можно найти на их сайте.
 
Название темы
Автор Заголовок Раздел Ответы Дата
Emilio_Gaviriya Статья Что такое Responder. Уязвимости и взлом 0
El_IRBIS Интересно Что такое EaaS. Анонимность и приватность 0
Emilio_Gaviriya Статья Конфигурация Kubernetes: Что это такое и зачем она нужна? Настройка системы для работы 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 Статья Что такое PKI. Анонимность и приватность 0
Emilio_Gaviriya Статья Что такое Malware-as-a-Service. Вирусология 0
Emilio_Gaviriya Статья Что такое DLP и с чем его едят? Уязвимости и взлом 0
DOMINUS Интересно Причины избегать общественного Wi-Fi - Что может случиться? Полезные статьи 0
D Что такое juice jacking? Уязвимости и взлом 1
GhosTM@n Интересно Что такое сканирование уязвимостей ? Уязвимости и взлом 0
GhosTM@n Интересно Что такое пентест и типы? Уязвимости и взлом 0
GhosTM@n Интересно Что такое Wazuh? Для чего его используют? Уязвимости и взлом 0
H Защита Linux-сервера. Что сделать в первую очередь Корзина 0
Eteriass Интересно Что такое koadic и почему не metasploit? Уязвимости и взлом 7
Denik Интересно Что ваш интернет провайдер знает про вас?! Анонимность и приватность 7
L Интересно Три сценария: Что будет с биткоином после халвинга? Новости в сети 0
Admin Что такое WiFi Pineapple и как его используют для беспроводного перехвата WiFi/Wardriving/Bluejacking 4
andre5787 Что можно сделать когда есть доступ к удаленному роутеру? Вопросы и интересы 5
V В России вступил в силу закон о суверенном интернете. Что изменилось? Новости в сети 0
H Что делать с 400к доками , кто их покупает ? Свободное общение и флейм 3
B Что делать если заблокировали киви Полезные статьи 1
A Что помогает предотвратить межсайтовый скриптинг? Уязвимости и взлом 0
A Что такое снифферы? Полезные статьи 0
A Что такое анализ данных? Полезные статьи 0
A Что такое хук в Git Другие ЯП 0
P Что можно сделать ,зная IP человека Полезные статьи 4
G Что такое DNS атака и как она работает? Полезные статьи 0
K Что такое фишинг. Тактики и инструменты. Уязвимости и взлом 0
M MYR Dump Забугор Что бы не делать миллион тем) Раздача email 8
A Что такое ip Полезные статьи 0
W Что можно сделать с сканом паспорта ? Полезные статьи 26
K Что такое Darkweb? Полезные статьи 3
H Что нельзя хранить на жестком диске компьютера в России Новости в сети 0
K Что делать в первую очередь при завладении чужого ПК Полезные статьи 1
I Что делать с дропом? Вопросы и интересы 6
K Что можно сделать с этими вещями? Вопросы и интересы 0
K Что за форум ccc.mn не кидалово? Black list и Разборки 5
D Что знает администрация vk.com Вопросы и интересы 8
Admin Что такое HTTPS ? Не такой уж и секьюред HTTPS Полезные статьи 0
Admin Что делать, если ты в федеральном розыске. Свободное общение и флейм 8
farhad.tiger Что делать если уже поймали? Полезные статьи 17
Support81 Слежка нового уровня: иностранные правительства могут читать ваши уведомления Новости в сети 0
S Scrooge_service! DDOS нового уровня! Корзина 2
Р Интересно За регу нового акка 200/1000 на вкусвил в их приложение Другое 0

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