February 26, 2012

Python: เทคนิคสำหรับเขียนให้สั้น

ในภาษาอื่น อาจพบ shorthand if-else เช่น condition ? true : false ; ส่วนใน Python เรามี

อย่าลืมว่าการย่อแบบนี้ ต้องมีส่วน else เสมอนะครับ



สำหรับ generator expressions (หรือที่มักเรียกกันว่า list comprehension เมื่อได้ผลลัพท์เป็น list) มีเทคนิคการกรองข้อมูล (filter) เช่นนี้

ส่วนการซ้อนชั้นของประโยค for ก็จะไล่ทำจากด้านหน้าไปด้านหลังเรื่อยๆ เช่นเดียวกับการวน for หลายชั้นครับ

ข้อสังเกตคือ การ filter นี้มีแต่ if อย่างเดียวนะครับ ไม่มี else และถ้าเอาไปใช้รวมกับ shorthand if-else ก็ระวังว่าจะงงเองหละ



สำหรับการเขียน slice เราสามารถเล่นกับมันได้มากขึ้นอีกโดยการบอก step ครับ

แต่ส่วนใหญ่ประโยชน์ของมันจะมาจากการกลับตำแหน่งของสมาชิกใน list มากกว่า คือ

นอกจากนี้ เรายังสามารถ unzip ตัวแปรในกรณีที่ไม่ต้องการระบุตัวแปรครบทุกตัวได้ด้วย

อย่างไรก็ดี แม้ว่าเทคนิคเหล่านี้จะทำให้ code ของเราดูสั้น (เพราะจำนวนบรรทัดที่ลดลง) แต่ก็ควรเลือกใช้ให้เหมาะสมด้วยนะครับ ไม่งั้นแล้วจะกลายเป็นว่า code ของเราจะอ่านยากและไร้ระเบียบไปแทน แถมบางเทคนิคก็อาจก่อนให้เกิดปัญหาด้าน performance อีกด้วยนะ

No comments:

Post a Comment