باعتباري أحد مطوري لغة Python، واجهت مؤخرًا مشكلة غريبة تتمثل في عدم تكرار الحلقات في الكود الخاص بي كما توقعت. كانت لدي وظيفة كانت تتكرر عبر قائمة النطاقات الزمنية للتحقق مما إذا كان الطابع الزمني يقع ضمن أي من النطاقات.
بدا الكود الخاص بي مثل هذا:
def check_timestamp(timestamp):
date_ranges = generate_ranges()
for range in date_ranges:
print("First loop")
for range in date_ranges:
print("Second loop")
def generate_ranges():
return (
{'start': date1, 'end': date2}
for date1, date2 in zip(start_dates, end_dates)
)
بعد بعض التصحيح، لاحظت اختفاء المشكلة عندما قمت بتغيير generate_ranges()
لإرجاع قائمة بدلاً من تعبير المولد:
def generate_ranges():
return [
{'start': date1, 'end': date2}
for date1, date2 in zip(start_dates, end_dates)
]
يبدو أن تعبير المولد كان يقدم بعض السلوكيات غير المتوقعة بين الحلقات. ومن خلال فرض التقييم في القائمة، فقد تم حل الغرابة.
لذلك، إذا رأيت في أي وقت مضى حلقات في كود Python الخاص بك لا تتكرر كما هو متوقع، فتحقق من وجود أي تعبيرات منشئة يمكن أن تسبب أخطاء خفية. يعد تحويلها إلى قوائم/صفوف قياسية طريقة سهلة لاستبعاد مشكلات التكرار.
اسمحوا لي أن أعرف إذا كان لديك أي أسئلة أخرى!