Dec
30

لماذا قد لا تتكرر حلقات بايثون الخاصة بك بشكل صحيح

12/30/2023 03:17 PM بواسطة Admin في Python


باعتباري أحد مطوري لغة 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 الخاص بك لا تتكرر كما هو متوقع، فتحقق من وجود أي تعبيرات منشئة يمكن أن تسبب أخطاء خفية. يعد تحويلها إلى قوائم/صفوف قياسية طريقة سهلة لاستبعاد مشكلات التكرار.

اسمحوا لي أن أعرف إذا كان لديك أي أسئلة أخرى!


افكارك

بحث
راعي
CRYPTOWATCH
تابعنا
الإعلانات

تمت إضافة أداة جديدة: حاسبة أبعاد تكبير SVG.

راعي