Python-future: استبدل lib2to3.fixes.fix_dict لتجنب استدعاءات list () غير الضرورية

تم إنشاؤها على ٨ سبتمبر ٢٠١٧  ·  4تعليقات  ·  مصدر: PythonCharmers/python-future

سيقوم lib2to3.fixes.fix_dict بشكل أساسي بإنهاء أي مكالمة إلى dict.keys() أو .values() أو .items() في list() بغض النظر عن سياقه.

ومع ذلك ، بقدر ما أستطيع أن أقول إن المكالمات غير مجدية إلى حد ما عندما يتم تكرار النتيجة مباشرة (على سبيل المثال for k, v in d.items() ) أو التحقق من الاحتواء (على سبيل المثال if a in d.keys() ) مما يؤدي إلى الكثير من الاختلافات الضوضاء للعودة.

سيكون لطيفًا إذا كان لدى Python-Future أداة إصلاح التكرار الخاصة بها لتجنب هذا الإزعاج.

0.21 enhancement

التعليق الأكثر فائدة

قد يؤدي تكرار العروض أثناء إضافة أو حذف الإدخالات في القاموس إلى ظهور خطأ وقت التشغيل أو فشل في التكرار على جميع الإدخالات.

إذا كانت الحلقة الداخلية من for تقوم بإضافة أو حذف الإدخالات ، فإن list() مطلوب

ال 4 كومينتر

قد يؤدي تكرار العروض أثناء إضافة أو حذف الإدخالات في القاموس إلى ظهور خطأ وقت التشغيل أو فشل في التكرار على جميع الإدخالات.

إذا كانت الحلقة الداخلية من for تقوم بإضافة أو حذف الإدخالات ، فإن list() مطلوب

لقد قمت بكتابة " fix_dict_methods " الخاصة بي والتي تقوم بما يلي:

"""Fixer for some dict methods.

Imports these compatibility methods from `future.utils`.

d.iterkeys() -> iterkeys(d)
d.iteritems() -> iteritems(d)
d.itervalues() -> itervalues(d)

d.viewkeys() -> viewkeys(d)
d.viewitems() -> viewitems(d)
d.viewvalues() -> viewvalues(d)
"""

يجب أن يكون أكثر أمانًا لكود PY2 الذي يصبح مستقبليًا ببطء خطوة بخطوة.

لا يتم تغليف أي من مكالمات .keys/values/items() البسيطة بـ list() أيضًا ، نظرًا لأنني لم أجد العديد من النقاط التي نحتاج إلى إصلاحها حتى الآن ، ولكن قد أتابعها كخطوة منفصلة - أعتقد أنه يمكنني تشغيل fix_dict العادي إذا كنت بحاجة إلى هذا التغيير.

اسمحوا لي أن أعرف ما إذا كان هناك اهتمام بهذا المتغير fix_dict . أنا أيضًا على استعداد لتغيير اسمها. (ربما fix_dict_methods_with_import ؟)

مرحبًا rdrey ، أنا مهتم بهذا البديل. يبدو أنها فكرة جيدة لتشغيلها قبل fix_dict العادي ، خاصةً إذا كانت قاعدة الكود تستدعي دائمًا إصدار iter عندما تحتاج فقط إلى مكرر.

هل تمانع في مشاركتها؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات