🔹پیش نویس رسمی تغییرات پایتون 3.15 اومده البته ممکنه تا زمان انتشارش که گفته شده آخر سال 2026 هست کلی تغییر دیگه داشته باشه اما یه خلاصه از تغییراتی که تا الان گفته شده با هم ببینیم:
1. اضافه شدن lazy import
این ویژگی باعث میشه ماژول فقط وقتی که توی کد استفاده بشه، لود میشه و استارتاپ برنامههای سنگین رو چند ثانیه سریعتر میکنه.
2. دیکشنری غیرقابل تغییر frozendict
قابل هشه (hashable) پس میتونه کلید دیکشنری دیگه یا عضو set باشه. برای کش (cache) و کانفیگ عالیه.
3. یه نوع داده جدید به اسم sentinel اضافه میشه که باهاش میتونید هر تعداد مقدار یونیک یا منحصر به فرد که نیاز داشتید بسازین.
مقداری که با هیچ چیز دیگه برابر نیست. برای مقداردهی اولیه یا خطاهای خاص عالیه.
4. باز کردن لیست ها با [*L for L in lists]
قبلا برای اینکار نیاز به 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
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
❤🔥15⚡6
این مقاله رو هر برنامه نویسی باید بخونه و بلد باشه
برنامه نویسی همزمان
برنامهنویسی همزمان یا همان Concurrency یکی از جذابترین و البته حیاتیترین مفهوم تو دنیای برنامه نویسیه که واقعا دید و کارایی خیلی خوبی بهمون میده
◀️ برای درک این مفهوم به نظرم یه مثال از زندگی روزمره خودمون کافیه و تماما جا میوفته براتون:
◀️ یک مثال عملی و واقعی:
◀️ یه مثال بزنیم براش:
◀️ خروجی:
◀️ توضیحات:
◀️ نکته: برای تلف کردن تایم در تابع تسک اول ما اومدیم از async time استفاده کردیم و با ماژول time خود پایتون نمیشه چون asyncable نیست خود ماژول
اونیم که میگفت منتظر میمونم باید بگم که کارش غیر همزمان محسوب میشه و نیازی به همزمان کردن کد نداره حتما شخص بیکاره دیگه میتونه برسه با کاراش🤷♂️
#python #learn
☕️ Telegram | Website | Discord
برنامه نویسی همزمان
برنامهنویسی همزمان یا همان Concurrency یکی از جذابترین و البته حیاتیترین مفهوم تو دنیای برنامه نویسیه که واقعا دید و کارایی خیلی خوبی بهمون میده
تصور کنید در حال آشپزی کردنید, پیازها رو خورد میکنید و توی ماهیتابه میریزین یعنی تا وقتی که پیازها سرخ بشن, دست به سینه جلوی گاز همینجوری میمونید؟ قطعاً نه (هر کسیم که بگه آره منتظر میمونم اونو توی اخر مقاله توی یه نکته میگم) با این حال تو همون چند دقیقه ای که پیازا در حال تفت خوردنن شما به سراغ شستن ظرفها یا خرد کردن گوجهفرنگیها میرین و خودتون رو به یه کار مشخص دیگه ای مصروف میکنید.
این دقیقاً همون کاریه که برنامهنویسی همزمان انجام میده
یعنی مدیریت و پیشبردن چند کار مختلف در یک بازه زمانی، بدون اینکه منتظر تموم شدن کار قبلی بمونیم در دنیای سنتی برنامهنویسی، همه چیز خط به خط و پشت سر هم اجرا میشه. مثلا اگه برنامتون قرار بود فایلی رو از اینترنت دانلود کنه کل برنامه منتظر میموند تا دانلود تموم بشه و واقعا هم تایم هدر میرفت و هم خسته کننده و رو مخ بود
ولی در برنامهنویسی همزمان، مشکلمون حل میشه هسته اصلی این ایده، استفاده بهینه از زمانهای مردست. وقتی یک بخش از برنامه منتظر پاسخ سرور، دریافت یک فایل یا خواندن اطلاعات از هارد دیسکه پردازنده معطل نمیمونه بلکه سریعاً به سراغ اجرای بخش بعدی از برنامه میره که آماده کاره. به این ترتیب، سرعت ظاهری و پاسخگویی سیستم به شدت بالا میره بدون اینکه لزوماً نیاز به سختافزار قویتری داشته باشیم
سیستم چت آنلاین یا همون رباتهای پیامرسان فرض کن هزار نفر همزمان به یه ربات مدیریت گروه پیام میدن. اگر برنامه همزمان نباشه ربات باید پیام نفر اولو بگیره پردازش کنه پاسخ بده و بعد که تموم شد سراغ نفر بعدی بره. نیعنی اینجوری باید نفر هزارم اینقدر منتظر بمونه تا کار اینا تموم بشه ولی با برنامهنویسی همزمان، ربات پیام نفر اول رو دریافت میکنه و در همان کسری از ثانیهای که منتظر تایید سرور برا ارسال پاسخه پیامهای نفرات بعدی رو هم تحویل میگیره. در واقع کارها به موازات هم جلو میرن و هیچکس در صف طولانی معطل نمیشه
ما این کار رو توی پایتون با دوتا کلمه کلیدی async و await انجام میدیم و ماژول بیلت این asyncio که در خود پایتون موجوده و نیازی به نصب نیست
پایتون به طور پیشفرض کد هارو خط به خط میخونه ولی این ماژول رفتارش رو تغییر میده و استفاده از تایم رو بهش یاد میده و مثل یک موتور عمل میکنه
import asyncio
async def task1():
await asyncio.sleep(2)
print(1)
async def task2():
print(2)
async def task3():
print(3)
async def main():
await asyncio.gather(task1(), task2(), task3())
asyncio.run(main())
2
3
1
کدمون اگه غیر همزمان بود به تابع task1 میرسید و یه sleep میخورد و تا اون مکثه تموم نمیشد هیچ جوره نمیرفت خط بعدی ولی الان که کدمون همزمانه میاد و به همون تابع میرسه و میبینه که کارش طول میکشه میره بعدیارو اجرا میکنه و بعد هر موقع که کارش تموم شد کارش تسک اولم اجرا میشه
اونیم که میگفت منتظر میمونم باید بگم که کارش غیر همزمان محسوب میشه و نیازی به همزمان کردن کد نداره حتما شخص بیکاره دیگه میتونه برسه با کاراش
#python #learn
☕️ Telegram | Website | Discord
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤🔥16🔥3⚡1👏1