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

Android

Pro Member
Сообщения
84
Реакции
25
Посетить сайт
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, но прирост производительности и новый синтаксис делают его полностью стоящим усилий. Подробный журнал изменений всего нового можно найти на их сайте.
 
Название темы
Автор Заголовок Раздел Ответы Дата
GhosTM@n Интересно Что такое сканирование уязвимостей ? Уязвимости и взлом 0
GhosTM@n Интересно Что такое пентест и типы? Уязвимости и взлом 0
GhosTM@n Интересно Что такое Wazuh? Для чего его используют? Уязвимости и взлом 0
H Защита Linux-сервера. Что сделать в первую очередь Корзина 0
Eteriass Интересно Что такое koadic и почему не metasploit? Уязвимости и взлом 7
Denik Интересно Что ваш интернет провайдер знает про вас?! Анонимность и приватность 7
LegolasGL Интересно Три сценария: Что будет с биткоином после халвинга? Новости в сети 0
Admin Что такое WiFi Pineapple и как его используют для беспроводного перехвата WiFi/Wardriving/Bluejacking 3
andre5787 Что можно сделать когда есть доступ к удаленному роутеру? Вопросы и интересы 5
Vlad_Tepes В России вступил в силу закон о суверенном интернете. Что изменилось? Новости в сети 0
Heryvim Что делать с 400к доками , кто их покупает ? Свободное общение и флейм 3
B Что делать если заблокировали киви Полезные статьи 1
A Что помогает предотвратить межсайтовый скриптинг? Уязвимости и взлом 0
A Что такое снифферы? Полезные статьи 0
A Что такое анализ данных? Полезные статьи 0
A Что такое хук в Git Другие ЯП 0
P Что можно сделать ,зная IP человека Полезные статьи 4
Forevonly Что такое DNS атака и как она работает? Полезные статьи 0
klobald Что такое фишинг. Тактики и инструменты. Уязвимости и взлом 0
Major1 MYR Dump Забугор Что бы не делать миллион тем) Раздача email 8
Azaar Что такое ip Полезные статьи 0
W Что можно сделать с сканом паспорта ? Полезные статьи 25
K Что такое Darkweb? Полезные статьи 3
hiller1234 Что нельзя хранить на жестком диске компьютера в России Новости в сети 0
K Что делать в первую очередь при завладении чужого ПК Полезные статьи 1
I Что делать с дропом? Вопросы и интересы 6
kaziken Что можно сделать с этими вещями? Вопросы и интересы 0
kaziken Что за форум ccc.mn не кидалово? Black list и Разборки 5
D Что знает администрация vk.com Вопросы и интересы 8
Admin Что такое HTTPS ? Не такой уж и секьюред HTTPS Полезные статьи 0
Admin Что делать, если ты в федеральном розыске. Свободное общение и флейм 8
farhad.tiger Что делать если уже поймали? Полезные статьи 17
Р Интересно [Crack] Linken Sphere 6.7 MOD(7.0) - антидетект браузер нового поколения Софт для работы с текстом/Другой софт 2
W WestCoreMarket.com l Магазин нового поколения | Аккаунты Купоны Продвижение Ищу работу. Предлагаю свои услуги. 13
ВЛАД013 ByPassCaptcha Python Другие ЯП 0
LightMan Интересно Шифруемся используя python (Крипто контейнеры и DPAPI) Другие ЯП 0
Eteriass Интересно Metasploit и Python Уязвимости и взлом 2
Gumanoid Бомбер для ПК на Python Spam/DDOS/Malware 2
ioctl Python программист для разных задач. Ищу работу. Предлагаю свои услуги. 1
Anorali Свой мини кейлоггер на python. Часть 3 Вирусология 2
Anorali Свой мини кейлоггер на python. Часть 2 Вирусология 0
Anorali Свой мини кейлоггер на python Вирусология 4
_ZerO_ Интересно Python и LongPoll VK, или как запустить скрипт ВК и настроит Другие ЯП 2
G Команда разработчиков - php, python, веб дизайн, программирование Ищу работу. Предлагаю свои услуги. 0
Shukumei Интересно CrazyPy - Пак самых нужных модулей для создания вирусов на python Другие ЯП 6
CMDfromBAT Интересно TeleSpy Telegram RAT by CMDfromBAT на языке Python Вирусология 22
blazar нужна помощь Python | автоматизация работы в браузере Вопросы и интересы 1
E Интересно Бот с автооплатой на Python Другие ЯП 10
#~Shinigami~# Интересно Свой мини-рат на python + стиллер хрома v80 Софт от наших юзеров 8
M Декомпиляция Python Другие ЯП 1

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