Dec
30

Mengapa Python Loops Anda Mungkin Tidak Berulang dengan Benar

12/30/2023 03:17 PM oleh Admin di Python


Sebagai pengembang Python, baru-baru ini saya mengalami masalah aneh di mana loop dalam kode saya tidak berulang seperti yang saya harapkan. Saya memiliki fungsi yang mengulangi daftar rentang tanggal untuk memeriksa apakah stempel waktu termasuk dalam rentang mana pun.

Kode saya terlihat seperti ini:

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)
  )
  • tidak ada cetakan "Loop kedua".

Setelah beberapa proses debug, saya melihat masalahnya hilang ketika saya mengubah generate_ranges() untuk mengembalikan daftar alih-alih ekspresi generator:

def generate_ranges():
  return [
    {'start': date1, 'end': date2}
    for date1, date2 in zip(start_dates, end_dates) 
  ]

Tampaknya ekspresi generator menimbulkan beberapa perilaku tak terduga di antara loop. Dengan memaksakan evaluasi ke dalam sebuah daftar, hal ini menyelesaikan keanehan tersebut.

Jadi, jika Anda pernah melihat loop dalam kode Python Anda tidak berulang seperti yang diharapkan, periksa ekspresi generator apa pun yang dapat menimbulkan bug halus. Mengonversinya menjadi daftar/tupel standar adalah cara mudah untuk mengesampingkan masalah iterator.

Beri tahu saya jika Anda memiliki pertanyaan lain!


Pikiran Anda

Mencari
SPONSOR
CRYPTOWATCH
IKUTI KAMI
PENGUMUMAN

Alat baru ditambahkan: Kalkulator Dimensi Zoom SVG.

SPONSOR

Snow: ON
Snow: ON