Python 3.8#
صدرت النسخة Python 3.8.0 (النهائية) في 14 أكتوبر 2019. ميزات الإصدار 3.8 معرّفة في PEP 569 ويمكن العثور على وصف تفصيلي للتغييرات في ما الجديد في Python 3.8.
الميزات | الحالة | |
الوسطاء الموضعية فقط | ||
تعبيرات الإسناد | مكتمل | |
بروتوكول pickle رقم 5 مع بيانات خارج النطاق | ||
خطافات التدقيق أثناء التشغيل | ||
تهيئة إعدادات بدء تشغيل Python | ||
Vectorcall: بروتوكول استدعاء سريع لـ CPython | ||
متفرقات | ||
تدعم سلاسل f المساواة = للتعبيرات ذاتية التوثيق وتصحيح الأخطاء | مكتمل | |
تغييرات أخرى في اللغة:
كانت عبارة continue غير مسموح بها في عبارة finally بسبب مشكلة في التنفيذ. في Python 3.8 رُفع هذا القيد | مكتمل |
تمتلك الأنواع bool وint وfractions.Fraction الآن طريقة as_integer_ratio() مثل تلك الموجودة في float وdecimal.Decimal | |
ستستخدم الآن منشئات int وfloat وcomplex الطريقة الخاصة __index__() إن كانت متاحة وكانت الطريقة المقابلة __int__() أو __float__() أو __complex__() غير متاحة | |
أُضيف دعم لرموز الهروب N{name} في التعبيرات النمطية | |
أصبحت dict وعروض dict الآن قابلة للتكرار بترتيب الإدراج العكسي باستخدام reversed() | |
زاد تقييد بناء الجملة المسموح به لأسماء الكلمات المفتاحية في استدعاءات الدوال. على وجه الخصوص، لم تعد f((keyword)=arg) مسموحًا بها | |
لم يعد التفكيك المعمَّم للعناصر القابلة للتكرار في عبارتي yield وreturn يتطلب أقواسًا محيطة | |
عند فقدان فاصلة في كود مثل [(10, 20) (30, 40)]، يعرض المُصرِّف تحذيرًا من نوع SyntaxWarning مع اقتراح مفيد | |
تُعيد الآن العمليات الحسابية بين الأصناف الفرعية لـ datetime.date أو datetime.datetime وكائنات datetime.timedelta نسخة من الصنف الفرعي، بدلًا من الصنف الأساسي | |
عند مقاطعة مفسّر Python بواسطة Ctrl-C (SIGINT) وعدم التقاط استثناء KeyboardInterrupt الناتج، تخرج عملية Python الآن عبر إشارة SIGINT أو برمز الخروج الصحيح بحيث تستطيع العملية المُستدعِية اكتشاف أنها انتهت بسبب Ctrl-C | |
تتطلب بعض الأنماط المتقدمة من البرمجة تحديث كائن types.CodeType لدالة موجودة | |
بالنسبة للأعداد الصحيحة، تسمح الآن صيغة الوسطاء الثلاثة لدالة pow() بأن يكون الأس سالبًا في الحالة التي يكون فيها الأساس أوليًا نسبيًا بالنسبة إلى المعامل التقسيمي (modulus) | |
جرت مزامنة استيعابات dict مع dict الحرفية بحيث يُحسب المفتاح أولًا والقيمة ثانيًا | |
يمكن الآن للطريقة object.__reduce__() أن تُعيد صفًا (tuple) بطول من عنصرين إلى ستة عناصر |
تغييرات على الوحدات المدمجة:
ترقّت asyncio.run() من الواجهة البرمجية المؤقتة إلى المستقرة | مكتمل |
تشغيل python -m asyncio يُطلق REPL غير متزامن أصليًا | |
يرث الاستثناء asyncio.CancelledError الآن من BaseException بدلًا من Exception ولم يعد يرث من concurrent.futures.CancelledError | مكتمل |
أُضيفت asyncio.Task.get_coro() للحصول على الكوروتين المُغلّف داخل asyncio.Task | |
يمكن الآن تسمية مهام asyncio، إما بتمرير الوسيط بالكلمة المفتاحية name إلى asyncio.create_task() أو طريقة حلقة الأحداث create_task()، أو باستدعاء الطريقة set_name() على كائن المهمة | |
أُضيف دعم لـ Happy Eyeballs إلى asyncio.loop.create_connection(). لتحديد السلوك، أُضيف معاملان جديدان: happy_eyeballs_delay وinterleave. | |
يمكن الآن لـ get_objects() أن تستقبل معاملًا اختياريًا للجيل (generation) يشير إلى الجيل الذي تُجلب منه الكائنات. (لاحظ مع ذلك أنه على الرغم من أن gc مدمجة، فإن get_objects() غير منفّذة في MicroPython) | |
أُضيفت دالة جديدة math.dist() لحساب المسافة الإقليدية بين نقطتين | |
وُسّعت الدالة math.hypot() للتعامل مع أبعاد متعددة | |
أُضيفت دالة جديدة math.prod() كدالة مماثلة لـ sum() تُعيد حاصل ضرب قيمة "البداية" (الافتراضية: 1) مضروبة في عناصر قابلة للتكرار من الأعداد | |
أُضيفت دالتان توافيقيتان جديدتان math.perm() وmath.comb() | |
أُضيفت دالة جديدة math.isqrt() لحساب الجذور التربيعية الصحيحة الدقيقة دون التحويل إلى الفاصلة العائمة | |
لم تعد الدالة math.factorial() تقبل وسطاء ليست شبيهة بالأعداد الصحيحة | مكتمل |
أُضيفت دالة جديدة sys.unraisablehook() التي يمكن تجاوزها للتحكم في كيفية معالجة "الاستثناءات غير القابلة للإطلاق" | |