GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||
GeezerVison is showing python.github.io — نسخه ۳.۱۵ چه چیزهای جدیدی دارد نسخه ۳.۱۵ چه چیزهای جدیدی دارد¶
این مقاله ویژگیهای جدید پایتون ۳.۱۵ را در مقایسه با ۳.۱۴ توضیح میدهد. پایتون ۳.۱۵ در ۹ اکتبر ۲۰۲۶ منتشر شد. برای جزئیات کامل، سیاهه تغییرات را ببینید. همچنین ببینید PEP 790 -- برنامهی انتشار پایتون ۳.۱۵ خلاصه -- نکات برجستهی انتشار¶پایتون ۳.۱۵ آخرین نسخهی پایدار زبان برنامهنویسی پایتون است که شامل ترکیبی از تغییرات در زبان، پیادهسازی و کتابخانهی استاندارد است. بزرگترین تغییرات شامل واردسازی تنبل، فرهنگ لغتهای فریز شده و توابع توکار نگهبان، استفاده از UTF-8 به عنوان کدگذاری پیشفرض، باز کردن بستهبندی در درک مجموعهها، و یک ایبیآی پایدار برای بیلدهای بدون قفل سراسری مفسر (free-threaded) میشود. تغییرات کتابخانه شامل یک بستهی پروفایلگیری جدید با Tachyon (یک پروفایلگیر نمونهبرداری آماری با فرکانس بالا)، رنگهای بیشتر در خروجی خط فرمان، و همچنین منسوخسازیها و حذفهای معمول، و بهبودهایی در کاربرپسندی و درستی است. این مقاله تلاشی برای ارائهی مشخصات کامل از همهی ویژگیهای جدید نمیکند، بلکه نمای کلی مناسبی را ارائه میدهد. برای جزئیات کامل به مستندات، مانند مرجع کتابخانه و مرجع زبان مراجعه کنید. برای درک پیادهسازی کامل و مبانی طراحی یک تغییر، به PEP مربوط به آن ویژگی خاص مراجعه کنید؛ اما توجه داشته باشید که معمولاً پس از پیادهسازی کامل یک ویژگی، PEPها بهروز نگه داشته نمیشوند. برای راهنمایی در مورد ارتقا از نسخههای قبلی پایتون، به Porting to Python 3.15 مراجعه کنید. بهبودهای مفسر: بهبودهای چشمگیر در کتابخانهی استاندارد:
ویژگیهای جدید تایپینگ: بهبودهای API زبان C:
تغییرات ساخت: تغییرات نسخهی جدید:
ویژگیهای جدید¶PEP 810: ایمپورتهای تنبل صریح¶برنامههای بزرگ پایتون اغلب از زمان راهاندازی کند رنج میبرند. عامل اصلی این مشکل، سیستم ایمپورت است: وقتی یک ماژول ایمپورت میشود، پایتون باید پرونده را پیدا کند، آن را از دیسک بخواند، به بایتکد کامپایل کند و تمام کد سطح بالا را اجرا کند. برای برنامههایی با درختهای وابستگی عمیق، این فرایند میتواند ثانیهها طول بکشد، حتی زمانی که بیشتر کدهای ایمپورتشده در طول یک اجرای خاص عملاً هرگز استفاده نمیشوند. توسعهدهندگان با انتقال ایمپورتها به داخل تابعها، استفاده از پایتون اکنون راهحل تمیزتری را از طریق ایمپورتهای تنبل صریح با استفاده از کلیدواژه lazy import json lazy from pathlib import Path print("Starting up...") # json and pathlib are not fully imported yet data = json.loads('{"key": "value"}') # json gets fully imported here p = Path(".") # pathlib gets fully imported here این مکانیزم بهویژه برای برنامههایی مفید است که ماژولهای زیادی را در سطح بالا ایمپورت میکنند اما ممکن است فقط زیرمجموعهای از آنها را در هر اجرای مشخصی استفاده کنند. بارگذاری به تعویق افتاده، تأخیر راهاندازی را بدون نیاز به بازسازی ساختار کد یا ایمپورتهای شرطی پراکنده در سراسر پایگاه کد کاهش میدهد. در مواردی که بارگذاری یک ماژول ایمپورتشدهی تنبل با شکست مواجه شود (برای مثال، اگر ماژول وجود نداشته باشد)، پایتون استثنا را در نقطهی اولین استفاده به جای زمان ایمپورت بالا میآورد. ردگیری مرتبط شامل هم مکانی است که به نام دسترسی پیدا شده و هم دستور اصلی ایمپورت، که عیبیابی و رفع خطا را ساده میکند. برای مواردی که میخواهید بارگذاری تنبل را به صورت سراسری و بدون تغییر کد منبع فعال کنید، پایتون گزینهی خط فرمان برای کنترل انتخابیتر، تابع import sys def myapp_filter(importing, imported, fromlist): return imported.startswith("myapp.") sys.set_lazy_imports_filter(myapp_filter) sys.set_lazy_imports("all") import myapp.slow_module # lazy (matches filter) import json # eager (does not match filter) خود نوع پراکسی به عنوان برخی محدودیتها در مورد جایی که میتوان از کلیدواژه برای کدهایی که نمیتوانند مستقیماً از کلیدواژه __lazy_modules__ = ["json", "pathlib"] import json # lazy import os # still eager (مشارکتدادهشده توسط Pablo Galindo Salgado و Dino Viehland در gh-142349.) همچنین ببینید PEP 810 برای مشخصات کامل و توجیه منطقی. PEP 814: افزودن نوع توکار frozendict¶یک نوع تغییرناپذیر جدید به نام برای مثال: >>> a = frozendict(x=1, y=2) >>> a frozendict({'x': 1, 'y': 2}) >>> a['z'] = 3 Traceback (most recent call last): File "<python-input-2>", line 1, in <module> a['z'] = 3 ~^^^^^ TypeError: 'frozendict' object does not support item assignment >>> b = frozendict(y=2, x=1) >>> hash(a) == hash(b) True >>> a == b True ماژولهای کتابخانهی استاندارد زیر بهروزرسانی شدهاند تا توابع کدهایی که نوع (مشارکتکرده توسط Victor Stinner و Donghee Na در gh-141510.) همچنین ببینید برای مشاهدهی مشخصات کامل و توجیه منطقی، به PEP 814 مراجعه کنید. PEP 661: افزودن نوع توکار sentinel¶یک نوع (مشارکتکرده توسط Jelle Zijlstra در gh-148829؛ PEP 661 توسط Tal Einat نوشته شده است.) همچنین ببینید برای جزئیات بیشتر به PEP 661 مراجعه کنید. PEP 799: یک بستهی اختصاصی برای پروفایلگیری¶یک ماژول
ماژول (مشارکتکرده توسط Pablo Galindo و László Kiss Kollár در gh-138122.) همچنین ببینید برای جزئیات بیشتر به PEP 799 مراجعه کنید. تاکیون: پروفایلگیر نمونهبرداری آماری با فرکانس بالا¶
یک پروفایلگیر نمونهبرداری آماری جدید (تاکیون) به Tachyon follows earlier work on external sampling profilers such as Austin, py-spy, Pyflame, and rbspy. We thank their authors and the wider profiling community for their work and ideas. برخلاف پروفایلگیرهای قطعی (مانند ویژگیهای کلیدی عبارتند از:
برای مستندات کامل، از جمله تمام قالبهای خروجی موجود، حالتهای پروفایلگیری و گزینههای پیکربندی، (مشارکتدادهشده توسط Pablo Galindo و László Kiss Kollár در gh-135953 و gh-138122.) PEP 831: اشارهگرهای قاب بهطور پیشفرض فعال شدند¶سیپایتون اکنون بهطور پیشفرض روی پلتفرمهایی که از آنها پشتیبانی میکنند با اشارهگرهای قاب ساخته میشود. این کار با استفاده از پرچمهای کامپایلر این پرچمها از طریق مهم بکاندهای ساخت شخص ثالث و سیستمهای ساخت بومی باید هنگام مصرف مقادیر (مشارکتدادهشده توسط Pablo Galindo Salgado و Savannah Ostrowski در gh-149201؛ PEP 831 نوشتهشده توسط Pablo Galindo Salgado، Ken Jin، Savannah Ostrowski و Diego Russo.) همچنین ببینید برای جزئیات بیشتر PEP 831 را ببینید. PEP 798: بازکردن بسته در درکها (comprehensions)¶درکهای فهرست، مجموعه و دیکشنری و همچنین عبرات تولیدگر، اکنون از بازکردن بسته با >>> lists = [[1, 2], [3, 4], [5]] >>> [*L for L in lists] # معادل [x for L in lists for x in L] [1, 2, 3, 4, 5] >>> sets = [{1, 2}, {2, 3}, {3, 4}] >>> {*s for s in sets} # معادل {x for s in sets for x in s} {1, 2, 3, 4} >>> dicts = [{'a': 1}, {'b': 2}, {'a': 3}] >>> {**d for d in dicts} # معادل {k: v for d in dicts for k,v in d.items()} {'a': 3, 'b': 2} عبارتهای تولیدگر میتوانند به طور مشابه از بازکردن بسته برای تولید مقادیر از چندین شیء پیمایشپذیر استفاده کنند: >>> gen = (*L for L in lists) # معادل (x for L in lists for x in L) >>> list(gen) [1, 2, 3, 4, 5] این تغییر همچنین به عبارتهای تولیدگر ناهمگام گسترش مییابد؛ بهطوریکه برای مثال، (تهیهشده توسط Adam Hartz در gh-143055.) همچنین ببینید برای جزئیات بیشتر به PEP 798 مراجعه کنید. PEP 829: پروندههای پیکربندی راهاندازی بسته¶پروندههای .pth files که هنگام عدم ارائهی گزینهی به عنوان گامی در راستای بهبود قابلیت حسابرسی کد اجرایی پیشازراهاندازی، پایتون ۳.۱۵ پروندههای .start files را معرفی میکند که حاوی مشخصات نقطهی ورود به شکل سطرهای ماژول PEP 803: رابط دودویی کاربردی (ABI) پایدار برای ساختهای نخآزاد¶افزونههای C که رابط دودویی کاربردی پایدار (Stable ABI) را هدف قرار میدهند، اکنون میتوانند برای رابط دودویی کاربردی پایدار برای ساختهای نخآزاد جدید (که با نام
توجه داشته باشید که رابط دودویی کاربردی (ABI) پایدار تمام قابلیتهایی را که سیپایتون ارائه میدهد، فراهم نمیکند. افزونههایی که نمیتوانند به رابط دودویی کاربردی (ABI) پایدار برای ساختهای نخآزاد معمولاً باید در یک ابزار ساخت انتخاب شود. ابزارهایی که از یک راهنمای مهاجرت کاربردی برای انتقال به همچنین ببینید برای جزئیات بیشتر به PEP 803 مراجعه کنید. PEP 788: محافظت از API زبان C در برابر نهاییسازی مفسر¶در API زبان C، نهاییسازی مفسر میتواند برای بسیاری از افزونهها مشکلساز باشد، زیرا متصل کردن یک وضعیت نخ (thread state) باعث معلق ماندن دائمی نخ خواهد شد که به بنبستها و سایر مسائل کاذب منجر میشود. علاوه بر این، از نظر تاریخی بررسی ایمن زندهبودن مفسر پیش از استفاده از آن غیرممکن بوده است و زمانی که یک نخ به طور همزمان مفسر را حذف میکند در حالی که نخ دیگری تلاش دارد به آن متصل شود، به خرابیها (crashes) منجر میشود. اکنون چندین مجموعهی جدید از APIها برای دور زدن این مشکلات وجود دارد:
علاوه بر این، رابطهای برنامهنویسی کاربردی در خانوادهی (مشارکتکرده توسط Peter Bierma در gh-149101.) همچنین ببینید برای جزئیات بیشتر به PEP 788 مراجعه کنید. بهبود پیامهای خطا¶
سایر تغییرات زبان¶
پوستهی (shell) تعاملی (interactive) پیشفرض¶
ماژولهای (modules) جدید¶math.integer¶این ماژول (module) دسترسی به توابع (functions) ریاضی را برای آرگومانهای (arguments) عدد صحیح (integer) فراهم میکند (PEP 791). (توسط Serhiy Storchaka در gh-81313 مشارکت داده شده است.) ماژولهای (modules) بهبودیافته¶argparse¶
array¶
ast¶
asyncio¶
base64¶
binascii¶
گاهشماری¶
مجموعهها (collections)¶concurrent.futures¶
contextlib¶
ctypes¶
dataclasses¶
dbm¶
difflib¶
email¶
faulthandler¶
functools¶
gc¶
hashlib¶
http.client¶
http.server¶
importlib.metadata¶
inspect¶json¶
locale¶
math¶
mimetypes¶
mmap¶
os¶
os.path¶
pathlib¶
pdb¶pickle¶
pickletools¶
pprint¶
re¶
resource¶
shelve¶socket¶
sqlite3¶
ssl¶
subprocess¶
symtable¶
sys¶
sys.monitoring¶
tarfile¶
threading¶
timeit¶
tkinter¶
tokenize¶
tomllib¶
types¶
typing¶
unicodedata¶
unittest¶
urllib.parse¶
venv¶
warnings¶
wave¶
(مشارکتکرده توسط Lionel Koenig و Michiel W. Beijen در gh-60729.) webbrowser¶
xml¶
xml.parsers.expat¶
zlib¶
بهینهسازیها¶
base64 و binascii¶
csv¶
ارتقاهای اساسی کامپایلر درجا (JIT)¶نتایج حاصل از مجموعه بنچمارک pyperformance بهبود عملکرد میانگین هندسی 7-8% را برای کامپایلر درجا (JIT) نسبت به مفسر استاندارد سیپایتون (CPython) که با فعال بودن تمامی بهینهسازیها روی لینوکس x86-64 ساخته شده است، گزارش میدهد. روی مکاوس AArch64، کامپایلر درجا (JIT) دارای سرعت اجرای 11-12% سریعتر نسبت به مفسر فراخوانی تهی با تمام بهینهسازیهای فعال است. بهبودهای سرعت برای ساختهای کامپایلر درجا (JIT) در مقایسه با ساختهای بدون آن، از حدود ۱۵ درصد کندی تا بیش از ۱۰۰ درصد سرعت بیشتر (با صرفنظر کردن از ریزبنچمارک ارتقاهای اصلی کامپایلر درجا (JIT) عبارتند از:
وابستگی زمان ساخت LLVM 21 کامپایلر درجا (JIT) اکنون از LLVM 21 برای تولید استنسیل در زمان ساخت استفاده میکند. مثل همیشه، LLVM فقط هنگام ساخت سیپایتون (CPython) با کامپایلر درجا (JIT) فعال مورد نیاز است؛ کاربران نهایی که پایتون را اجرا میکنند نیازی به نصب LLVM ندارند. دستورالعملهای نصب LLVM را میتوانید در مستندات کامپایلر درجا (JIT) برای تمام پلتفرمهای پشتیبانیشده پیدا کنید. (مشارکتکننده: Savannah Ostrowski در gh-140973.) رابط فرهنگی ردیابی جدید کامپایلر درجا (JIT) اکنون به طور قابل توجهی از عملیات بایتکد و جریان کنترلی بیشتری نسبت به پایتون 3.14 پشتیبانی میکند که امکان افزایش سرعت را در طیف وسیعتری از کد فراهم میکند. برای مثال، ایجاد شیء سادهی پایتون اکنون توسط کامپایلر درجا (JIT) نسخهی 3.15 درک میشود. عملیاتهای سربارگذاریشده و تولیدگرها نیز به طور جزئی پشتیبانی میشوند. این امر با ارتقای اساسی رابط فرهنگی ردیابی کامپایلر درجا (JIT) ممکن شده است که به جای تخمین زدن مسیرهای اجرا مانند پیادهسازی قبلی، مسیرهای اجرای واقعی را از طریق کد ثبت میکند. (مشارکتکننده: Ken Jin در gh-139109. پشتیبانی از ویندوز توسط Mark Shannon در gh-141703 اضافه شد.) تخصیص ثبات پایه در کامپایلر درجا (JIT) یک شکل اولیهی از تخصیص ثبات به بهینهساز کامپایلر درجا (JIT) اضافه شده است. این امر به کامپایلر درجا (JIT) اجازه میدهد تا از برخی عملیات پشته کاملاً اجتناب کند و در عوض روی ثباتها کار کند. این کار به کامپایلر درجا (JIT) اجازه میدهد با اجتناب از خواندن و نوشتن در حافظه، ردوندهای (traces) کارآمدتری تولید کند. (مشارکتکننده: Mark Shannon در gh-135379.) بهینهسازیهای بیشتر کامپایلر درجا (JIT) اکنون انتشار ثابت بیشتری (constant-propagation) انجام میشود. این بدان معناست که وقتی کامپایلر درجا (JIT) تشخیص میدهد که کدهای خاص کاربر به مقادیر ثابت منجر میشوند، کد میتواند توسط کامپایلر درجا (JIT) سادهسازی شود. (مشارکتکنندگان: Ken Jin و Savannah Ostrowski در gh-132732.) هر زمان که انجام آن ایمن باشد، از شمارهی ارجاع اجتناب میشود. این موضوع به طور کلی هزینهی بیشتر عملیاتها را در پایتون کاهش میدهد. (مشارکتکنندگان: Ken Jin, Donghee Na, Zheao Li, Hai Zhu, Savannah Ostrowski, Reiden Ong, Noam Cohen, Tomas Roun, PuQing, Cajetan Rodrigues, و Sacul در gh-134584.) بهینهساز کامپایلر درجا (JIT) با پیگیری ارجاعات یکتا به شیءها، اکنون میتواند بهروزرسانیهای شمارهی ارجاع را حذف کرده و عملیات درونجا (in-place) را روی اعداد صحیح و اعداد اعشاری انجام دهد. (مشارکتکنندگان: Reiden Ong و Pieter Eendebak در gh-143414 و gh-146306.) بهینهساز کامپایلر درجا (JIT) اکنون به طور قابل توجهی از عملیات بیشتری نسبت به نسخهی 3.14 پشتیبانی میکند. (مشارکتکنندگان: Kumar Aditya, Ken Jin, Jiahao Li, و Sacul در gh-131798.) پشتیبانی از باز کردن پشته (unwinding) با GDB و کامپایلر درجا (JIT) اکنون اطلاعات بازکردن پشته (unwind) را برای کد ماشین تولیدشده در پلتفرمهای پشتیبانیشدهی لینوکس ELF به رابط GDB منتشر میکند. هنگامی که ثبت قاب (frame) در libgcc دردسترس باشد، همان اطلاعات بازکردن پشته برای پیمایشگرهای پشتهی GNU تولید کد ماشین بهتر تولیدگر کد ماشین کامپایلر درجا (JIT) اکنون کد ماشین بهتری برای اهداف x86-64 و AArch64 در سیستمعاملهای مکاوس و لینوکس تولید میکند. بهطور کلی، کاربران باید در مقایسه با نسخهی ۳.۱۴، مصرف حافظهی کمتری برای کد ماشین تولیدشده و کد ماشین کارآمدتری را تجربه کنند. (مشارکتکننده: Brandt Bucher در gh-136528 و gh-135905. پیادهسازی برای AArch64 توسط Mark Shannon در gh-139855. بهینهسازیهای اضافی برای AArch64 توسط Mark Shannon و Diego Russo در gh-140683 و gh-142305.) قابلیت نگهداری عملیات بهینهساز کامپایلر درجا (JIT) سادهسازی شدهاند. این کار با بازسازی ساختارهای دادهی کامپایلر درجا (JIT) امکانپذیر شد. (مشارکتکنندگان: Zhongtian Zheng در gh-148211 و Hai Zhu در gh-143421.) حذفشده¶ast¶
collections.abc¶
ctypes¶
datetime¶
glob¶
http.server¶
importlib¶
importlib.resources¶
pathlib¶
platform¶
sre_*¶
sysconfig¶
threading¶types¶
typing¶
wave¶
zipimport¶
منسوخشدهها¶موارد منسوخ جدید¶
حذف احتمالی در پایتون ۳.۱۶¶
در نوبت حذف در نسخهی ۳.۱۷¶
در انتظار حذف در نسخهی ۳.۱۸ پایتون¶در انتظار حذف در نسخهی ۳.۱۹ پایتون¶
در نوبت حذف در پایتون ۳.۲۰¶
در نوبت حذف در نسخههای آینده¶واسطهای برنامهنویسی (API) زیر در آینده حذف خواهند شد، البته در حال حاضر هیچ تاریخ مشخصی برای حذف آنها تعیین نشده است.
منسوخسازیهای نرم¶هیچ برنامهای برای حذف APIهای با منسوخسازی نرم وجود ندارد.
تغییرات C API¶ویژگیهای جدید¶
APIهای تغییریافتهی C¶
رابطهای برنامهنویسی کاربردی (API) زبان C حذفشده¶
تابعهای زیر به نفع
رابطهای برنامهنویسی کاربردی C منسوخشده¶
تغییرات ساخت¶
انتقال به پایتون ۳.۱۵¶این بخش تغییرات توصیفشدهی قبلی و سایر رفع باگهایی را فهرست میکند که ممکن است نیازمند تغییراتی در کد شما باشند.
Notable changes in 3.15.2¶importlib¶
ssl¶
© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است. مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند. برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید. بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید. آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟ ساخته شده با Sphinx 9.1.0. | |||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |