Dec
30

چرا حلقه های پایتون شما ممکن است به درستی تکرار نشوند؟

12/30/2023 03:17 PM توسط Admin که در 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) 
  ]

به نظر می رسد که عبارت مولد رفتار غیرمنتظره ای را بین حلقه ها ایجاد می کند. با تحمیل ارزشیابی به یک لیست، دمدمی بودن را برطرف کرد.

بنابراین اگر تا به حال مشاهده کردید که حلقه‌هایی در کد پایتون شما همانطور که انتظار می‌رود تکرار نمی‌شوند، عبارات مولد را که می‌توانند باگ‌های ظریف را معرفی کنند، بررسی کنید. تبدیل آن‌ها به فهرست‌ها/تاپ‌های استاندارد راهی آسان برای رد کردن مشکلات تکرارکننده است.

اگر سوال دیگری داشتید من را در جریان بگذارید!


اندیشه های تو

جستجو کردن
حامی مالی
CRYPTWATCH
ما را دنبال کنید
اطلاعیه ها

ابزار جدید اضافه شد: ماشین حساب ابعاد بزرگنمایی SVG.

حامی مالی

Snow: ON
Snow: ON