Python 3.6¶
صدرت النسخة التجريبية الأولى من Python 3.6 في 12 سبتمبر 2016، ويمكن العثور على ملخص للميزات الجديدة هنا:
ميزات بناء الجملة الجديدة |
الحالة |
|
تنسيق السلاسل النصية الحرفية |
مكتمل |
|
الشرطات السفلية في الأعداد الحرفية |
مكتمل |
|
المولّدات غير المتزامنة |
||
بناء جملة توصيفات المتغيرات (مؤقت) |
مكتمل |
|
الاستيعابات غير المتزامنة |
||
ميزات مدمجة جديدة |
||
الحفاظ على ترتيب kwargs في الدالة |
||
تخصيص أبسط لإنشاء الأصناف |
جزئي [1] |
|
الحفاظ على ترتيب تعريف سمات الصنف |
||
تغييرات المكتبة القياسية |
||
إزالة لبس التوقيت المحلي |
||
إضافة وحدة Secrets إلى المكتبة القياسية |
||
إضافة بروتوكول لمسار نظام الملفات |
||
الأجزاء الداخلية لـ CPython |
||
إضافة نسخة خاصة إلى dict |
لن يُنفّذ |
|
إضافة واجهة برمجية لتقييم الإطارات إلى CPython |
||
تغييرات Linux/Windows |
||
جعل |
||
تغيير ترميز وحدة تحكم Windows إلى UTF-8 |
||
تغيير ترميز نظام ملفات Windows إلى UTF-8 |
||
تغييرات أخرى في اللغة:
يجب الآن أن تظهر عبارة global أو nonlocal نصيًا قبل أول استخدام للاسم المتأثر في النطاق نفسه. كان هذا في السابق تحذيرًا من نوع SyntaxWarning. |
|
أصبح من الممكن الآن تعيين دالة خاصة إلى None للإشارة إلى أن العملية المقابلة غير متاحة. على سبيل المثال، إذا عيّن الصنف __iter__() إلى None، فإن الصنف يصبح غير قابل للتكرار. |
|
تُختصر الآن التسلسلات الطويلة من أسطر التتبع المكررة على شكل [Previous line repeated {count} more times] |
|
يُطلق الاستيراد الآن الاستثناء الجديد ModuleNotFoundError عندما يتعذر عليه العثور على وحدة. سيظل الكود الذي يتحقق حاليًا من ImportError (في try-except) يعمل. |
|
ستعمل الآن طرق الأصناف التي تعتمد على super() بدون وسطاء بشكل صحيح عند استدعائها من طرق الصنف الفوقي (metaclass) أثناء إنشاء الصنف. |
تغييرات على الوحدات المدمجة:
ستبقى المكررات المستنفدة لـ array.array مستنفدة حتى وإن جرى توسيع المصفوفة المُكرَّرة. |
|
تقبل الدالة b2a_base64() الآن وسيطًا اختياريًا بالكلمة المفتاحية newline للتحكم في ما إذا كان يُلحَق حرف السطر الجديد بالقيمة المُعادة |
مكتمل |
أُضيف الثابت الجديد cmath.tau (τ) |
|
ثوابت جديدة: cmath.inf وcmath.nan لمطابقة math.inf وmath.nan، وكذلك cmath.infj وcmath.nanj لمطابقة التنسيق المستخدم في repr الخاص بالأعداد المركبة |
|
أُضيف الصنف الأساسي المجرد الجديد Collection لتمثيل أصناف الحاويات القابلة للتكرار ذات الحجم المحدد |
|
يمثل الصنف الأساسي المجرد الجديد Reversible الأصناف القابلة للتكرار التي توفر أيضًا طريقة __reversed__(). |
|
يمثل الصنف الأساسي المجرد الجديد AsyncGenerator المولّدات غير المتزامنة. |
|
تقبل الدالة namedtuple() الآن وسيطًا اختياريًا بالكلمة المفتاحية module، والذي يُستخدم عند تحديده للسمة __module__ الخاصة بصنف الصف المُسمّى المُعاد. |
|
أصبح الوسيطان verbose وrename الخاصان بـ namedtuple() الآن بالكلمة المفتاحية فقط. |
|
يمكن الآن تخليل (pickle) نسخ collections.deque التكرارية. |
|
أُضيفت دوال التجزئة BLAKE2 إلى الوحدة. تتوفر blake2b() وblake2s() دائمًا وتدعمان مجموعة الميزات الكاملة لـ BLAKE2. |
|
أُضيفت دوال التجزئة SHA-3 وهي sha3_224() وsha3_256() وsha3_384() وsha3_512()، ودوال التجزئة SHAKE وهي shake_128() وshake_256(). |
|
أصبحت دالة اشتقاق المفاتيح المعتمدة على كلمة المرور scrypt() متاحة الآن مع OpenSSL 1.1.0 وما بعده. |
|
تدعم json.load() وjson.loads() الآن الإدخال الثنائي. ينبغي تمثيل JSON المُرمَّز باستخدام UTF-8 أو UTF-16 أو UTF-32. |
|
أُضيف الثابت الجديد math.tau (τ) |
مكتمل |
تتيح الطريقة الجديدة close() الإغلاق الصريح لمكرر scandir(). يدعم مكرر scandir() الآن بروتوكول مدير السياق. |
|
على Linux، تحظر الآن os.urandom() حتى تتم تهيئة مجمّع إنتروبيا urandom للنظام لزيادة الأمان. |
|
يُتاح الآن استدعاء نظام التشغيل getrandom() الخاص بـ Linux (الحصول على بايتات عشوائية) عبر الدالة الجديدة os.getrandom(). |
|
أُضيف دعم لمدى المُعدِّلات في التعبيرات النمطية. أمثلة: '(?i:p)ython' يطابق 'python' و'Python' لكن ليس 'PYTHON'؛ '(?i)g(?-i:v)r' يطابق 'GvR' و'gvr' لكن ليس 'GVR'. |
|
يمكن الوصول إلى مجموعات كائن المطابقة عبر __getitem__، وهو ما يكافئ group(). لذا فإن mo['name'] يكافئ الآن mo.group('name'). |
|
تدعم كائنات المطابقة الآن الكائنات الشبيهة بالفهارس كفهارس للمجموعات. |
|
تدعم الدالة ioctl() الآن رمز التحكم SIO_LOOPBACK_FAST_PATH. |
|
أصبحت ثوابت getsockopt() وهي SO_DOMAIN وSO_PROTOCOL وSO_PEERSEC وSO_PASSSEC مدعومة الآن. |
|
تدعم setsockopt() الآن الصيغة setsockopt(level, optname, None, optlen: int). |
|
تدعم وحدة socket الآن عائلة العناوين AF_ALG للتفاعل مع واجهة التشفير البرمجية لنواة Linux. أُضيفت ALG_ وSOL_ALG وsendmsg_afalg(). |
|
أُضيفت ثوابت Linux الجديدة TCP_USER_TIMEOUT وTCP_CONGESTION. |
|
تدعم ssl الإصدار OpenSSL 1.1.0. الحد الأدنى الموصى به هو 1.0.2. |
|
أُزيلت 3DES من مجموعات التشفير الافتراضية وأُضيفت مجموعات التشفير ChaCha20 Poly1305. |
|
يتمتع SSLContext بتهيئة افتراضية أفضل للخيارات والشيفرات. |
|
يمكن نسخ جلسة SSL من اتصال على جانب العميل إلى آخر باستخدام الصنف الجديد SSLSession. يمكن لاستئناف جلسة TLS تسريع المصافحة الأولية وتقليل زمن الاستجابة وتحسين الأداء. |
|
يمكن استخدام الطريقة الجديدة get_ciphers() للحصول على قائمة بالشيفرات الممكّنة مرتبة بحسب أولوية الشيفرة. |
|
حُوّلت جميع الثوابت والأعلام إلى IntEnum وIntFlags. |
|
أُضيفت بروتوكولات TLS الخاصة بجانب الخادم وجانب العميل لـ SSLContext. |
|
أُضيفت SSLContext.post_handshake_auth لتمكين مصادقة ما بعد المصافحة في TLS 1.3 وssl.SSLSocket.verify_client_post_handshake() لبدئها. |
|
تدعم الآن أعداد IEEE 754 ذات الدقة النصفية عبر محدد التنسيق 'e'. |
|
تُعيد الدالة الجديدة getfilesystemencodeerrors() اسم وضع الخطأ المستخدم في التحويل بين أسماء ملفات Unicode وأسماء الملفات الثنائية. |
|
تقبل الدالتان compress() وdecompress() الآن وسطاء بالكلمات المفتاحية |
|
ملاحظات