Python 3.9 да пайдо бўладиган ажойиб фичалар
Python 3.9 ҳозирги вақтда бета-фазанинг 4-итерациясида. Aйрим нарсалар ўзгариши мумкин, лекин ҳозир барчаси аниқ бўлди.
Умумий типдаги аннотациялар (кичик изохлар)
Умумий изоҳлар, AКA PEP 5.8.5
ни питончилар орзу қилишган эди. Энди сиз кутубхона ишлатмасдан туриб, лист ва унинг элемент турини аниқлашингиз мумкин мумкин:
def do_stuff(data: list[int]):
pass
Ҳозирда умумлаштирилган баъзи тўпламлар:
tuple
list
dict
set
frozenset
type
collections.deque
collections.abc.Coroutine
re.Pattern
Dict Union оператори
Python 3.9 гача стандарт курсатиш куйидагича эди:
1..upadte()
методи: a.update(b)
2. Ажратиш(саралаш) оператори: {*a, *b}
Хўш, бизда бошқаси хам бор. |
оператори нима қилиши кераклигини аниқ бажаради: Икки диктаталар бирлаштирилади:
a = {'cars': 5, 'phones': 2}
b = {'cows': 10, 'lizards': 3}
a | b
// {'cars': 5, 'phones': 2, 'cows': 10, 'lizards': 3}
.update
ёки spread
оператори сингари, агар диктатада такрорий калитлар бўлса, бу маълумотлар йўқолишига олиб келиши мумкин. Бундан ташқари, ушбу оператор кийинрок топшириклар билан бир хил даражада ишлайди:
a = {'cars': 5, 'phones': 2}
b = {'cows': 10, 'lizards': 3}
a |= b
print(a)
// {'cars': 5, 'phones': 2, 'cows': 10, 'lizards': 3}
Қўшимчаларни ва префиксларни олиб ташлаш
Янги .removesuffix()
ва .removeprefix()
стринг методлари:
'SubaruImpreza`.removeprefix('Subaru') // 'Impreza' 'SubaruImpreza'.removesuffix('Impreza') // 'Subaru'
Янги парсер
Python 3.9 да янги парсер ишлатилади. У PEG га асосланган бўлиб, эски LL дан анча яхши. LL анча вақт олдин эскирганди, шунинг учун ҳам янги парсер ишлаб чиқилди. Aгар сиз эски парсер билан ишламоқчи бўлсангиз, ўзгарувчини эълон қилишингиз мумкин: PYTHONOLDPARSER=1.
Zoneinfo модули
Питон 3.9-да zoneinofo номли янги модул тақдим этилди. ZoneInfo модули IANA вақт зонасини қўллаб-қувватлайди:
from zoneinfo import ZoneInfo
from datetime import datetime, timedelta
timestamp = datetime(2020, 7, 15, 11, tzinfo=ZoneInfo("America/Los_Angeles"))
Graphlib модули
Яна бир янги модул - жадваллар билан ишлаш учун. Ҳозирги вақтда у фақат йўналтирилган аиклик графиклар учун топологик саралаш алгоритмини амалга оширмоқда. Aгар сиз ҳозиргина ёзган нарсаларимни тушунмасангиз, унда сизга янги модул керак бўлмайди. Графика назарияси билан таниш бўлганлар учун ушбу модул қуйидагича ишлатилиши керак (Питон документациясидан олдим):
>>> graph = {"D": {"B", "C"}, "C": {"A"}, "B": {"A"}}
>>> ts = TopologicalSorter(graph)
>>> tuple(ts.static_order())
('A', 'C', 'B', 'D'
)
Бу илонча ҳар доим ўз янгиликлари билан хурсанд қилади. Жаноб питонистлар, мақола ёққан бўлса, каналимизга обуна бўлиб қўйинг ;)