1. اضافه شدن lazy import
این ویژگی باعث میشه ماژول فقط وقتی که توی کد استفاده بشه، لود میشه و استارتاپ برنامههای سنگین رو چند ثانیه سریعتر میکنه.
lazy import json
lazy from pathlib import Path
print("Starting up...") # json and pathlib not loaded yet
data = json.loads('{"key": "value"}') # json loads here
p = Path(".") # pathlib loads here
2. دیکشنری غیرقابل تغییر frozendict
قابل هشه (hashable) پس میتونه کلید دیکشنری دیگه یا عضو set باشه. برای کش (cache) و کانفیگ عالیه.
a = frozendict(x=1, y=2) #frozendict({'x': 1, 'y': 2})
a["z"] = 3 #TypeError
b = frozendict(y=2, x=1)
hash(a) == hash(b) #True
a == b #True3. یه نوع داده جدید به اسم sentinel اضافه میشه که باهاش میتونید هر تعداد مقدار یونیک یا منحصر به فرد که نیاز داشتید بسازین.
مقداری که با هیچ چیز دیگه برابر نیست. برای مقداردهی اولیه یا خطاهای خاص عالیه.
NOT_FOUND = sentinel("NOT_FOUND")4. باز کردن لیست ها با [*L for L in lists]
lists = [[1, 2], [3, 4], [5]]
[*L for L in lists] # equivalent to [x for L in lists for x in L]
#[1, 2, 3, 4, 5]
قبلا برای اینکار نیاز به for تو در تو بود.
5. پیشفرض UTF-8 برای فایلها
دیگه open("file.txt") با UTF-8 باز میشه، نه encoding سیستم. پس txt فارسی هم دیگه بهم نمیریزه.
6. پروفایلر جدید نمونهبرداری (Sampling Profiler) با سرعت1میلیون نمونه در ثانیه
بدون اینکه کدت رو کند کنه، میتونی ببینی کجای برنامه وقت میگیره. برای بهینهسازی تو تولید (production) عالیه.
7. کامپایلر JIT بهبود پیدا میکنه
میانگین 8 تا 12 درصد سریعتر از پایتون 3.14. تخصیص رجیستر، رفرنس کانت کمتر.
❌حذف شدن collections.abc.ByteString و typing.ByteString
⚠️ ساخت NamedTuple با
Point = NamedTuple("Point", x=int) (از کلاس استفاده کنید)
#python #new
☕️ Telegram | Website | Discord