پس از یک سال و نیم توسعه ارایه شده انتشار زبان برنامه نویسی اصلی پایتون 3.8. به روز رسانی اصلاحی برای شاخه پایتون 3.8 برنامه ریزی شده در عرض 18 ماه منتشر شود. آسیب پذیری های بحرانی به مدت 5 سال تا اکتبر 2024 رفع خواهند شد. به روز رسانی های اصلاحی برای شاخه 3.8 هر دو ماه یکبار منتشر می شود و اولین نسخه اصلاحی Python 3.8.1 برای دسامبر برنامه ریزی شده است.
پشتیبانی عملیات انتساب در عبارات پیچیده با عملگر جدید “:=”، می توان عملیات انتساب مقدار را در داخل عبارات دیگر انجام داد، به عنوان مثال، برای جلوگیری از فراخوانی دو تابع در دستورات شرطی و هنگام تعریف حلقه ها:
اگر (n := len(a)) > 10:
...
while (block := f.read(256)) != ":
...
پشتیبانی نحو جدید برای تعیین آرگومان های تابع. هنگام شمارش آرگومان ها در طول تعریف تابع، اکنون می توانید برای جدا کردن آرگومان هایی که فقط بر اساس ترتیب شمارش مقادیر در طول فراخوانی تابع، از آرگومان هایی که می توان آنها را تخصیص داد، یک "/" تعیین کنید. به هر ترتیب (متغیر = نحو ارزش)). از جنبه عملی، ویژگی جدید به توابع در پایتون اجازه میدهد تا رفتار توابع موجود در C را به طور کامل شبیهسازی کنند، و همچنین از اتصال به نامهای خاص، به عنوان مثال، اگر قرار است نام پارامتر در آینده تغییر کند، اجتناب کنند.
پرچم "/" مکمل پرچم "*" است که قبلاً اضافه شده است و متغیرهایی را که فقط یک انتساب به شکل "variable=value" برای آنها قابل اعمال است جدا می کند. به عنوان مثال، در تابع "def f(a, b, /, c, d, *, e, f):" متغیرهای "a" و "b" فقط می توانند به ترتیبی که مقادیر فهرست شده اند نسبت داده شوند. ،
متغیرهای "e" و "f"، فقط از طریق انتساب "variable=value" و متغیرهای "c" و "d" به هر یک از روشهای زیر:
اضافه C API جدید
برای پیکربندی پارامترهای اولیه سازی پایتون، امکان کنترل کامل بر روی همه پیکربندی و ارائه امکانات پیشرفته رسیدگی به خطا. API پیشنهادی تعبیه عملکرد مفسر پایتون را در سایر برنامههای C آسان میکند.
اجرا شد پروتکل Vectorcall جدید برای دسترسی سریعتر به اشیاء نوشته شده به زبان C. در CPython 3.8، دسترسی به Vectorcall هنوز محدود به استفاده داخلی است؛ انتقال به دسته APIهای قابل دسترس عموم در CPython 3.9 برنامه ریزی شده است.
اضافه فراخوانی به Runtime Audit Hooks، که برنامهها و چارچوبهایی را در پایتون با دسترسی به اطلاعات سطح پایین در مورد پیشرفت اسکریپت برای بررسی اقدامات انجام شده فراهم میکند (به عنوان مثال، میتوانید واردات ماژولها، باز کردن فایلها، با استفاده از ردیابی، دسترسی به سوکت های شبکه، اجرای کد از طریق exec، eval و run_mod)؛
در ماژول ترشی کردنامن شده است پشتیبانی از پروتکل Pickle 5، که برای سریال سازی و جداسازی اشیاء استفاده می شود. Pickle به شما این امکان را می دهد که با کاهش تعداد عملیات کپی حافظه و استفاده از تکنیک های بهینه سازی اضافی مانند استفاده از الگوریتم های فشرده سازی خاص داده، انتقال مقادیر زیادی از داده ها را بین فرآیندهای پایتون در پیکربندی های چند هسته ای و چند گره بهینه کنید. نسخه پنجم پروتکل به دلیل افزودن حالت انتقال خارج از باند قابل توجه است که در آن داده ها می توانند به طور جداگانه از جریان اصلی ترشی منتقل شوند.
بهطور پیشفرض، نسخه چهارم پروتکل Pickle فعال میشود که در مقایسه با نسخه سومی که قبلاً بهطور پیشفرض ارائه شده بود، امکان عملکرد بالاتر و کاهش اندازه دادههای ارسالی را فراهم میکند.
کلاس TypedDict برای آرایه های انجمنی که در آنها اطلاعات نوع به صراحت برای داده های مرتبط با کلیدها مشخص شده است ("TypedDict('Point2D', x=int, y=int, label=str)").
نوع لفظی، که به شما امکان می دهد یک پارامتر یا مقدار را به چند مقدار از پیش تعریف شده محدود کنید ("Literal['connected', 'disconnected']").
ساخت و ساز "نهایی"، که امکان تعریف مقادیر متغیرها، توابع، متدها و کلاس هایی را فراهم می کند که قابل تغییر یا تخصیص مجدد نیستند ("pi: Final[float] = 3.1415926536").
قابلیت اختصاص کش برای فایل های کامپایل شده با بایت کد، ذخیره شده در درخت FS جداگانه و جداسازی از فهرست ها با کد اضافه شده است. مسیر ذخیره فایل ها با بایت کد از طریق یک متغیر تنظیم می شود PYTHONPYCACHEPIX یا گزینه "-X pycache_prefix"؛
اجرا شد توانایی ایجاد ساختهای اشکالزدایی پایتون که از ABI مشابه نسخه استفاده میکنند، که به شما امکان میدهد افزونههای نوشته شده به زبان SI را که برای نسخههای پایدار کامپایل شدهاند، در بیلدهای اشکالزدایی بارگذاری کنید.
رشتههای f (الفاظ قالببندیشده با پیشوند «f») از عملگر = پشتیبانی میکنند (مثلاً «f'{expr=}'»)، که به شما امکان میدهد یک عبارت را برای اشکالزدایی آسانتر به متن تبدیل کنید. مثلا: