Форум программистов, компьютерный форум, киберфорум
Welemir1
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 2.

Что PYTHON грядущий нам готовит. Релиз-кандидат Python 3.9

Запись от Welemir1 размещена 08.09.2020 в 16:09
Обновил(-а) Welemir1 08.09.2020 в 16:11

Python 3.9 еще не вышел, но уже интересно что там прикрутили и добавили, для всех подробностей иди вот сюда, я же опишу то, что мне показалось интересным.
Как я понимаю сами новшества скорее больше подкапотные -изменили парсер, оптимизировали по скорости коллекции (ниже покажу), удалили некоторые депрекаты (попрощайтесь с sys.getcheckinterval() и кодировкой в json.loads() ), поправили С код и так далее. Для рядового юзера на верхушке айсберга изменений осталось не так уж и много. Напомню -в прошлый раз на вершине айсберга сидел морж :=


Важно! Новый питон для Windows будет идти по умолчанию с 64-битным инсталлером и не будет совсем запускаться на Windows 7!


1) В аннотациях типов теперь можно писать встроенные типы, не используя модуль typing. Если ранее мы писали
Python
1
2
3
from typing import List
 
a_list: List[int] = [1,2,3]
то теперь без всяких импортов можно написать просто
Python
1
a_list: list[int] = [1,2,3]
или даже
Python
1
a_list = list[int]()
напомню, что это только аннотация, интерпретатор не будет проверять тип при работе с такой коллекцией!

2) главное юзерское новшество - это возможность слияния словарей с новым синтаксисом | и |=
ранее было
Python
1
2
3
4
>>> dict1={'1':1}
>>> dict1.update({'2':2})
>>> dict1
{'1': 1, '2': 2}
при нескольких словарях, которые нужно слить в один, нам бы пришлось писать цикл или делать update по очереди или
Python
1
2
3
4
5
6
7
>>> dict1={'1':1}
>>> dict2={'2':2}
>>> dict3={'3':3}
>>> dict4={'4':4}
>>> result = {**dict1, **dict2, **dict3, **dict4}
>>> result
{'1': 1, '2': 2, '3': 3, '4': 4}
теперь можно делать так
Python
1
2
3
>>> dict1={'1':1}
>>> dict1 | {'2':2}
{'1': 1, '2': 2}
еще короче вот так
Python
1
2
3
4
>>> dict1 = {'1':1}
>>> dict1 |= {'2':2}
>>> dict1
{'1': 1, '2': 2}
и даже вот так для нескольких словарей
Python
1
2
3
4
5
6
7
>>> dict1={'1':1}
>>> dict2 = {'2':2}
>>> dict3 = {'3':3}
>>> dict4 = {'4':4}
>>> result = dict1 | dict2 | dict3 | dict4
>>> result
{'1': 1, '2': 2, '3': 3, '4': 4}
О читаемости и удобстве судить вам, но код стал короче конечно

3) у строки появились методы удаления префикса и суффикса
Python
1
2
3
4
5
6
7
8
9
>>> text = 'Hello'
>>> text.removeprefix('Hell')
'o'
>>> text.removesuffix('o')
'Hell'
>>> text.removesuffix('*')
'Hello'
>>> text.removeprefix('A')
'Hello'
Обратите внимание, что если суффикса/префикса нет, то исключений нет, просто исходный текст не меняется

4) появился класс для работы с часовыми поясами ZoneInfo
Например для получения моего местного времени из UTC
Python
1
2
3
4
5
6
7
>>> from datetime import datetime, timezone
>>> utc = datetime.now(timezone.utc)
>>> utc
datetime.datetime(2020, 9, 8, 8, 30, 50, 994895, tzinfo=datetime.timezone.utc)
>>> my_time = utc.astimezone(ZoneInfo('Asia/Yekaterinburg'))
>>> my_time
datetime.datetime(2020, 9, 8, 13, 30, 50, 994895, tzinfo=zoneinfo.ZoneInfo(key='Asia/Yekaterinburg'))

5) в методе json.loads() удален аргумент кодировки, который и ранее был депрекатом

6) в модуль random добавлен метод генерации случайных байт
Python
1
2
3
>>> from random import randbytes
>>> randbytes(10)
b'\xe5\x19\xd0\xd15\x98g\xac\xef\x9e'
7) оптимизация коллекций по скорости
питон 3.8 создание словаря
Python
1
2
3
4
5
6
7
>>> from timeit import timeit
>>> timeit('d=dict()', number =1000)
0.00019754100000568542
>>> timeit('d=dict()', number =1000)
0.0001978180000037355
>>> timeit('d=dict()', number =1000)
0.00020114299999818286
питон 3.9 создание словаря
Python
1
2
3
4
5
6
7
>>> from timeit import timeit
>>> timeit('d=dict()', number =1000)
0.00017288299999762557
>>> timeit('d=dict()', number =1000)
0.00017565400000307818
>>> timeit('d=dict()', number =1000)
0.00017565399998886733
разница как видим незначительная, на некоторых моих тестах питон 3.8 был даже побыстрее, впрочем это можно наблюдать по таблице бенчмарка на странице с обновлениями, ссылку на которую я дал в самом начале!

Кликните здесь для просмотра всего текста
телеграм чат по питону, не только для новичков https://t.me/pythonchatru (осторожно! токсично!)
Размещено в Без категории
Просмотров 270 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.