- 1 1. ตัวดำเนินการแบบสามเงื่อนไข (Ternary Operator) ใน Python คืออะไร?
- 2 2. ข้อดีของการใช้ Ternary Operator
- 3 3. ตัวอย่างการใช้งาน Ternary Operator
- 4 4. การใช้ Ternary Operator ร่วมกับ List Comprehension
- 5 5. Lambda Function และ Ternary Operator
- 6 6. ข้อควรระวังในการใช้ Ternary Operator
- 7 7. แนวทางการใช้ Ternary Operator ที่เหมาะสม (Best Practices)
- 8 8. ประสิทธิภาพของ Ternary Operator
- 9 9. คำถามที่พบบ่อย (FAQ)
1. ตัวดำเนินการแบบสามเงื่อนไข (Ternary Operator) ใน Python คืออะไร?
วิธีการเขียนเงื่อนไขแบบกระชับใน Python
ตัวดำเนินการแบบสามเงื่อนไข (Ternary Operator) ใน Python เป็นโครงสร้างที่ช่วยให้เขียนเงื่อนไขได้ในบรรทัดเดียว ปกติการใช้คำสั่ง if-else
จะต้องเขียนหลายบรรทัด แต่เมื่อใช้ Ternary Operator จะทำให้โค้ดสั้นลง อ่านง่ายขึ้น และดูเป็นระเบียบ ก่อนอื่นมาดูโครงสร้างพื้นฐานกันก่อน
result = ค่า1 if เงื่อนไข else ค่า2
ในโครงสร้างนี้ หากเงื่อนไขเป็นจริง จะคืนค่า ค่า1
แต่ถ้าเป็นเท็จ จะคืนค่า ค่า2
ทำให้สามารถเขียนโค้ดที่สั้นและอ่านง่ายขึ้น
ตัวอย่างการใช้ Ternary Operator เบื้องต้น
เช่น ตรวจสอบว่าตัวเลขเป็นบวกหรือลบ
x = 5
result = "จำนวนบวก" if x > 0 else "จำนวนลบ"
print(result)
โค้ดนี้จะตรวจสอบว่า x
มีค่ามากกว่า 0 หรือไม่ ถ้ามากกว่าจะคืนค่าเป็น “จำนวนบวก” หากไม่ใช่จะคืนค่าเป็น “จำนวนลบ” ซึ่งช่วยให้เขียนเงื่อนไขสั้นและชัดเจน

2. ข้อดีของการใช้ Ternary Operator
ความกระชับและการอ่านโค้ดที่ง่ายขึ้น
ข้อดีหลักของ Ternary Operator คือทำให้โค้ดกระชับขึ้น โดยเฉพาะเมื่อใช้กับเงื่อนไขที่ไม่ซับซ้อน หากใช้ if-else
จะทำให้โค้ดยาวและซ้ำซ้อน แต่การใช้ Ternary Operator จะทำให้เขียนได้ในบรรทัดเดียว ทำให้โค้ดอ่านง่ายขึ้น
age = 20
status = "ผู้ใหญ่" if age >= 18 else "ยังไม่บรรลุนิติภาวะ"
print(status)
ในตัวอย่างนี้ ถ้า age
มากกว่าหรือเท่ากับ 18 จะคืนค่าเป็น “ผู้ใหญ่” ไม่เช่นนั้นจะคืนค่าเป็น “ยังไม่บรรลุนิติภาวะ” ซึ่งเขียนได้สั้นและเข้าใจง่าย
การประมวลผลที่รวดเร็วสำหรับเงื่อนไขง่ายๆ
เมื่อเปรียบเทียบกับ if-else
ปกติ Ternary Operator อาจทำงานได้เร็วกว่าเล็กน้อย เนื่องจากโค้ดสั้นและประมวลผลโดยตรง อย่างไรก็ตาม ในโค้ดขนาดใหญ่ ความแตกต่างนี้แทบไม่มีนัยสำคัญ
3. ตัวอย่างการใช้งาน Ternary Operator
ตัวอย่างพื้นฐานของการใช้ Ternary Operator
ต่อไปนี้เป็นตัวอย่างการใช้งานจริงของ Ternary Operator
number = -3
result = "จำนวนบวก" if number > 0 else "จำนวนลบ"
print(result) # ผลลัพธ์: จำนวนลบ
ตัวอย่างนี้ตรวจสอบว่า number
เป็นบวกหรือลบ แม้จะเป็นการเช็คเงื่อนไขที่ง่าย แต่การใช้ Ternary Operator ทำให้เขียนได้เพียงบรรทัดเดียว
Ternary Operator แบบซ้อนเงื่อนไข (Nested)
หากต้องตรวจสอบหลายเงื่อนไข สามารถซ้อน Ternary Operator ได้ เช่น ตรวจสอบว่าค่าตัวเลขเป็นบวก ลบ หรือศูนย์
x = 0
result = "จำนวนบวก" if x > 0 else "จำนวนลบ" if x < 0 else "ศูนย์"
print(result) # ผลลัพธ์: ศูนย์
วิธีนี้ช่วยให้เขียนโค้ดที่ซับซ้อนได้กระชับขึ้น แต่หากซ้อนเงื่อนไขมากเกินไป อาจทำให้โค้ดอ่านยาก
4. การใช้ Ternary Operator ร่วมกับ List Comprehension
การประมวลผลลิสต์อย่างมีประสิทธิภาพ
Ternary Operator สามารถใช้ร่วมกับ List Comprehension ได้อย่างมีประสิทธิภาพ โดยช่วยให้เขียนโค้ดจัดการข้อมูลในลิสต์ตามเงื่อนไขได้สั้นและชัดเจน
numbers = [i * 2 if i % 2 == 0 else i for i in range(10)]
print(numbers) # ผลลัพธ์: [0, 1, 4, 3, 8, 5, 12, 7, 16, 9]
ในตัวอย่างนี้ หากค่าของ i
เป็นเลขคู่ จะถูกคูณด้วย 2 แต่ถ้าเป็นเลขคี่ จะคงค่าเดิมไว้
5. Lambda Function และ Ternary Operator
การใช้ Ternary Operator ใน Lambda Function
Ternary Operator ยังสามารถใช้ร่วมกับฟังก์ชันนิรนาม (Lambda) ได้ดี ทำให้เขียนโค้ดที่สั้นและเรียบง่ายยิ่งขึ้น
f = lambda x: "เลขคู่" if x % 2 == 0 else "เลขคี่"
print(f(5)) # ผลลัพธ์: เลขคี่
ในตัวอย่างนี้ ฟังก์ชัน f
จะตรวจสอบค่าที่รับเข้ามาและบอกว่าเป็นเลขคู่หรือเลขคี่

6. ข้อควรระวังในการใช้ Ternary Operator
ความซับซ้อนจากการซ้อนเงื่อนไข
แม้ว่า Ternary Operator จะสะดวก แต่หากใช้ซ้อนหลายชั้น จะทำให้โค้ดอ่านยากและเข้าใจลำบาก
result = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D"
ในกรณีเช่นนี้ ควรใช้ if-else
ปกติแทนเพื่อให้โค้ดอ่านง่ายขึ้น
7. แนวทางการใช้ Ternary Operator ที่เหมาะสม (Best Practices)
ใช้กับเงื่อนไขที่เรียบง่าย
Ternary Operator เหมาะสำหรับการใช้กับเงื่อนไขที่ไม่ซับซ้อน หากเงื่อนไขซับซ้อนเกินไป ควรใช้ if-else
ปกติแทนเพื่อหลีกเลี่ยงปัญหาด้านการอ่านโค้ด ตัวอย่างเช่น ใช้ในกรณีที่มีเงื่อนไขเพียง 1–2 แบบเท่านั้น
x = 10
result = "positive" if x > 0 else "negative"
ในตัวอย่างนี้ เหมาะสมอย่างยิ่งเพราะเป็นเงื่อนไขง่ายๆ
8. ประสิทธิภาพของ Ternary Operator
ผลกระทบต่อประสิทธิภาพ
Ternary Operator บางครั้งทำงานได้เร็วกว่า if-else
เล็กน้อย เนื่องจากโครงสร้างที่กระชับ แต่ถ้าใช้กับเงื่อนไขที่ซับซ้อนมาก อาจทำให้โค้ดอ่านยากและประสิทธิภาพลดลง
result = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D"
การใช้ Ternary Operator แบบซ้อนหลายชั้นเช่นนี้ จะทำให้โค้ดเข้าใจยากขึ้น และไม่เหมาะหากโฟกัสที่ประสิทธิภาพเป็นหลัก
ระวังเมื่อใช้กับเงื่อนไขที่ซับซ้อน
ถ้า Ternary Operator มีการเรียกใช้ฟังก์ชันหรือการคำนวณที่ซับซ้อน อาจทำให้เกิดการประมวลผลเกินความจำเป็น เช่น:
result = expensive_function() if condition else default_value
ในกรณีนี้ การใช้ if-else
ปกติจะช่วยป้องกันการเรียกฟังก์ชันที่ไม่จำเป็นได้
9. คำถามที่พบบ่อย (FAQ)
ควรใช้ Ternary Operator เมื่อไหร่?
Ternary Operator เหมาะสำหรับเงื่อนไขที่ง่าย และต้องการเขียนให้สั้น เช่น ตรวจสอบค่าบวกหรือลบ ใช้ใน List Comprehension หรือใน Lambda Function
result = "บวก" if number > 0 else "ลบ"
การใช้เพียงบรรทัดเดียวช่วยให้โค้ดดูเรียบง่ายและเหมาะในกรณีที่ต้องการโค้ดสั้นๆ
เมื่อไหร่ควรหลีกเลี่ยงการใช้ Ternary Operator?
ควรหลีกเลี่ยงเมื่อมีหลายเงื่อนไขซับซ้อนซ้อนกัน เพราะจะทำให้โค้ดอ่านยาก และเข้าใจยากในอนาคต รวมถึงกรณีที่การประมวลผลมีผลต่อประสิทธิภาพ เช่น การเรียกใช้ฟังก์ชันหนักๆ ควรใช้ if-else
ปกติแทน
ควรเลือกใช้ Ternary Operator หรือ if-else
ดี?
ขึ้นอยู่กับสถานการณ์ หากเป็นเงื่อนไขที่ง่ายและต้องการเขียนโค้ดให้สั้น ควรใช้ Ternary Operator แต่ถ้าเงื่อนไขซับซ้อน หรือโฟกัสที่การอ่านและการบำรุงรักษาโค้ด ควรเลือกใช้ if-else
แบบปกติ