1. พื้นฐานของตัวดำเนินการ `or` ใน Python
ตัวดำเนินการ `or` คืออะไร?
ตัวดำเนินการ or
เป็นหนึ่งในตัวดำเนินการเชิงตรรกะของ Python โดยจะคืนค่า True
หากเงื่อนไขใดเงื่อนไขหนึ่งจากสองเงื่อนไขเป็น True
และจะคืนค่า False
ก็ต่อเมื่อเงื่อนไขทั้งสองเป็น False
เท่านั้น ตัวดำเนินการนี้มักใช้เมื่อรวมหลายเงื่อนไขเข้าด้วยกัน ทำให้การแยกเงื่อนไขเป็นไปอย่างกระชับ
วิธีการใช้งานพื้นฐาน
ตัวดำเนินการ or
ใช้งานดังนี้: เงื่อนไขสองเงื่อนไขจะถูกรวมด้วย or
หากเงื่อนไขใดเงื่อนไขหนึ่งเป็น True
ผลลัพธ์โดยรวมจะเป็น True
a = 5
b = 10
if a > 3 or b < 5:
print("เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง")
else:
print("ทั้งสองเงื่อนไขเป็นเท็จ")
ในตัวอย่างนี้ a > 3
เป็น True
และ b < 5
เป็น False
แต่เนื่องจากใช้ตัวดำเนินการ or
หากเงื่อนไขใดเงื่อนไขหนึ่งเป็น True
การประเมินผลโดยรวมจะเป็น True
คุณสมบัติของตัวดำเนินการ or
ตัวดำเนินการ or
มีคุณสมบัติที่เรียกว่าการประเมินแบบลัดวงจร (Short-circuit evaluation) ซึ่งหมายความว่า หากเงื่อนไขด้านซ้ายเป็น True
เงื่อนไขด้านขวาจะไม่ถูกประเมินและจะข้ามไป สิ่งนี้มีประโยชน์ในการประหยัดทรัพยากรการประมวลผล
ตัวอย่างเช่น ในโค้ดต่อไปนี้ เงื่อนไขแรกเป็น True
ดังนั้น b == 10
จะไม่ถูกประเมิน
a = 5
b = 10
if a > 3 or b == 10:
print("เนื่องจาก a มากกว่า 3 การประเมินจึงสิ้นสุดที่นี่")

2. การใช้ `if` statement และตัวดำเนินการ `or`
การใช้ตัวดำเนินการ `or` กับหลายเงื่อนไข
ใน `if` statement ของ Python ตัวดำเนินการ or
มีประโยชน์อย่างมากเมื่อต้องการประเมินหลายเงื่อนไข ตัวอย่างเช่น หากต้องการดำเนินการบางอย่างเมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง การใช้ or
จะช่วยให้โค้ดกระชับขึ้น
ต่อไปนี้เป็นตัวอย่างการใช้ตัวดำเนินการ or
เพื่อกำหนดการกระทำตามอายุของผู้ใช้:
age = 16
if age < 18 or age > 65:
print("มีสิทธิ์ได้รับส่วนลด")
else:
print("ไม่มีสิทธิ์ได้รับส่วนลด")
ในตัวอย่างนี้ ส่วนลดจะใช้กับผู้ใช้ที่มีอายุต่ำกว่า 18 ปีหรือมากกว่า 65 ปี การใช้ or
ทำให้สามารถรวมสองเงื่อนไขได้อย่างง่ายดาย
การรวมหลายเงื่อนไขกับ `or`
เงื่อนไขที่ซับซ้อนขึ้นก็สามารถทำให้ง่ายขึ้นได้ด้วย or
ในตัวอย่างต่อไปนี้ จะใช้ตัวแปรหลายตัว และการดำเนินการจะถูกเรียกใช้หากตัวแปรใดตัวแปรหนึ่งตรงตามเงื่อนไขที่กำหนด
temperature = 35
humidity = 70
if temperature > 30 or humidity > 60:
print("ควรเปิดแอร์")
else:
print("ไม่จำเป็นต้องเปิดแอร์")
ในกรณีนี้ หากอุณหภูมิสูงกว่า 30 องศาเซลเซียสหรือความชื้นสูงกว่า 60% จะแนะนำให้เปิดเครื่องปรับอากาศ การใช้ or
สามารถทำให้การตัดสินใจในชีวิตประจำวันง่ายขึ้นได้เช่นกัน

3. การประยุกต์ใช้ตัวดำเนินการ `or`
ตัวอย่างการใช้ตัวดำเนินการ `or` นอกเหนือจาก `if` statement
ตัวดำเนินการ or
สามารถใช้ได้ในหลายสถานการณ์ นอกเหนือจากใน `if` statement โดยเฉพาะอย่างยิ่งมีประโยชน์ในการตั้งค่าค่าเริ่มต้น ตัวอย่างเช่น สามารถตรวจสอบว่าอ็อบเจกต์เช่นลิสต์หรือพจนานุกรมเป็น None
หรือว่างเปล่าหรือไม่ และกำหนดค่าเริ่มต้นในกรณีดังกล่าว
def get_list(l=None):
l = l or []
return l
print(get_list()) # ผลลัพธ์: []
print(get_list([1, 2, 3])) # ผลลัพธ์: [1, 2, 3]
ในตัวอย่างนี้ โค้ดจะคืนค่าลิสต์ว่างเมื่อลิสต์เป็น None
การใช้ตัวดำเนินการ or
ช่วยให้สามารถเขียนโค้ดที่เรียบง่ายโดยไม่ต้องใช้การแยกเงื่อนไข
การใช้ `or` หลายตัว
บางครั้งอาจมีการเชื่อมเงื่อนไขตั้งแต่สามเงื่อนไขขึ้นไปด้วย or
ในกรณีดังกล่าว เงื่อนไขจะถูกประเมินจากซ้ายไปขวา และค่าแรกที่เป็น True
จะถูกส่งคืน
result = None or "default" or "another"
print(result) # ผลลัพธ์: default
ในตัวอย่างนี้ None
แรกจะถือเป็น False
ดังนั้น “default” ถัดไปจะถูกส่งคืนเป็นผลลัพธ์ ด้วยวิธีนี้ การใช้ตัวดำเนินการ or
ช่วยให้สามารถเลือกค่าที่เหมาะสมที่สุดจากหลายเงื่อนไขได้
4. ความแตกต่างระหว่าง `and` และ `or`
ความแตกต่างพื้นฐาน
and
และ or
เป็นตัวดำเนินการเชิงตรรกะทั้งคู่ แต่มีการทำงานที่แตกต่างกันโดยสิ้นเชิง ตัวดำเนินการ or
จะคืนค่า True
หากเงื่อนไขใดเงื่อนไขหนึ่งเป็น True
ในขณะที่ตัวดำเนินการ and
จะคืนค่า True
ก็ต่อเมื่อเงื่อนไขทั้งสองเป็น True
เท่านั้น
ตัวอย่างเช่น ลองดูโค้ดต่อไปนี้:
a = True
b = False
if a and b:
print("ทั้งสองเป็นจริง")
else:
print("อย่างใดอย่างหนึ่งหรือทั้งสองเป็นเท็จ")
ในตัวอย่างนี้ แม้ว่า a
จะเป็น True
แต่เนื่องจาก b
เป็น False
ผลลัพธ์โดยรวมจึงเป็น False
และ `else` clause จะถูกเรียกใช้ เมื่อเปรียบเทียบกับตัวดำเนินการ or
ความแตกต่างที่สำคัญของ and
คือทั้งสองเงื่อนไขจะต้องเป็น True
ตัวอย่างการใช้งานกับหลายเงื่อนไข
เมื่อใช้ and
และ or
ร่วมกัน แนะนำให้ใช้วงเล็บเพื่อทำให้เงื่อนไขชัดเจนขึ้น
temperature = 25
weather = "rainy"
if (temperature > 20 and temperature < 30) or weather == "rainy":
print("ควรพกร่มออกไปด้วย")
else:
print("ไม่จำเป็นต้องพกร่ม")
ในกรณีนี้ หากอุณหภูมิอยู่ระหว่าง 20 ถึง 30 องศาเซลเซียส หรือสภาพอากาศมีฝน จะแนะนำให้พกร่ม การรวม and
และ or
ช่วยให้สามารถแสดงเงื่อนไขที่ซับซ้อนได้อย่างกระชับ

5. การเพิ่มประสิทธิภาพของตัวดำเนินการ `or`
การเพิ่มประสิทธิภาพด้วยการประเมินแบบลัดวงจร
หนึ่งในข้อได้เปรียบที่สำคัญที่สุดของตัวดำเนินการ or
คือคุณสมบัติ “การประเมินแบบลัดวงจร” ซึ่งหากเงื่อนไขด้านซ้ายเป็น True
เงื่อนไขด้านขวาจะไม่ถูกประเมิน สิ่งนี้ช่วยหลีกเลี่ยงการคำนวณที่ไม่จำเป็นและช่วยเพิ่มความเร็วในการประมวลผล
ตัวอย่างเช่น ในโค้ดต่อไปนี้ หาก can_edit()
เป็น True
ฟังก์ชัน can_publish()
จะไม่ถูกเรียกใช้
def can_edit():
return True
def can_publish():
print("ฟังก์ชันนี้จะไม่ถูกเรียก")
return True
if can_edit() or can_publish():
print("สามารถแก้ไขหรือเผยแพร่ได้")
ในตัวอย่างนี้ เนื่องจากด้านซ้ายของ or
เป็น True
ฟังก์ชัน can_publish()
จะไม่ถูกเรียกใช้ และไม่มีการประมวลผลที่ไม่จำเป็นเกิดขึ้น การแยกเงื่อนไขโดยใช้ or
จึงเป็นเทคนิคสำคัญในการเขียนโค้ดที่มีประสิทธิภาพ
ตัวอย่างการใช้งานจริง
เมื่อต้องจัดการกับชุดข้อมูลขนาดใหญ่ หรือเมื่อต้องประมวลผลหลายเงื่อนไขอย่างรวดเร็ว การใช้ประโยชน์จากการประเมินแบบลัดวงจรสามารถช่วยลดเวลาในการประมวลผลได้ การใช้ตัวดำเนินการ or
ช่วยให้สามารถหลีกเลี่ยงการประมวลผลที่ไม่จำเป็นและสร้างโค้ดที่มีประสิทธิภาพได้

6. สรุป
ทบทวนตัวดำเนินการ `or`
ตัวดำเนินการ or
มีบทบาทสำคัญอย่างยิ่งในฐานะพื้นฐานของการดำเนินการเชิงตรรกะในการเขียนโปรแกรม Python โดยมีคุณสมบัติที่ส่งคืน True
หากเงื่อนไขใดเงื่อนไขหนึ่งจากหลายเงื่อนไขเป็น True
และมักใช้ในสถานการณ์ต่างๆ เช่น การแยกเงื่อนไขและการตั้งค่าค่าเริ่มต้น นอกจากนี้ ตัวดำเนินการ or
ยังทำการประเมินแบบลัดวงจร ซึ่งนำไปสู่การเพิ่มประสิทธิภาพ
ลองใช้ในโค้ดจริง
นอกเหนือจากทฤษฎีแล้ว ขอแนะนำอย่างยิ่งให้ลองใช้ตัวดำเนินการ or
ในสภาพแวดล้อมการพัฒนา Python จริงๆ ลองใช้ตั้งแต่การใช้งานพื้นฐานไปจนถึงตัวอย่างการประยุกต์ใช้ที่หลากหลาย และดูว่าโค้ดทำงานอย่างไร การสัมผัสกับการทำงานของเงื่อนไขและวิธีการเขียนโค้ดที่มีประสิทธิภาพด้วยตัวเองจะช่วยให้เข้าใจได้ลึกซึ้งยิ่งขึ้น