การใช้ความเข้าใจในรายการสำหรับผลข้างเคียงนั้นน่าเกลียดไม่ใช่ Pythonic ไม่มีประสิทธิภาพและฉันจะไม่ทำ ฉันจะใช้for
ลูปแทนเพราะกfor
ลูปส่งสัญญาณถึงรูปแบบขั้นตอนซึ่งผลข้างเคียงมีความสำคัญ
แต่ถ้าคุณยืนยันอย่างเต็มที่ที่จะใช้ความเข้าใจในรายการสำหรับผลข้างเคียงคุณควรหลีกเลี่ยงความไม่มีประสิทธิภาพโดยใช้นิพจน์ตัวสร้างแทน หากคุณยืนยันในสไตล์นี้อย่างเต็มที่ให้เลือกทำอย่างใดอย่างหนึ่งต่อไปนี้:
any(fun_with_side_effects(x) and False for x in y if (...conditions...))
หรือ:
all(fun_with_side_effects(x) or True for x in y if (...conditions...))
นี่คือนิพจน์ตัวสร้างและไม่สร้างรายการแบบสุ่มที่ถูกโยนออกไป ฉันคิดว่าall
แบบฟอร์มอาจจะชัดเจนกว่าเล็กน้อยแม้ว่าฉันคิดว่าทั้งคู่สับสนและไม่ควรใช้
ฉันคิดว่ามันน่าเกลียดและฉันจะไม่ทำในรหัส แต่ถ้าคุณยืนยันที่จะใช้ลูปของคุณในรูปแบบนี้ฉันจะทำมัน
ฉันมักจะรู้สึกว่าความเข้าใจในรายการและความสำคัญของพวกเขาควรส่งสัญญาณถึงความพยายามที่จะใช้บางสิ่งบางอย่างที่คล้ายกับรูปแบบการทำงานเล็กน้อย การใส่สิ่งที่มีผลข้างเคียงที่ทำลายสมมติฐานนั้นจะทำให้ผู้คนต้องอ่านโค้ดของคุณอย่างรอบคอบมากขึ้นและฉันคิดว่านั่นเป็นสิ่งที่ไม่ดี