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() الآن وسطاء بالكلمات المفتاحية | |
ملاحظات