Python or Operator: เข้าใจการทำงานและเพิ่มประสิทธิภาพโค้ดของคุณ

目次

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 ช่วยให้สามารถแสดงเงื่อนไขที่ซับซ้อนได้อย่างกระชับ

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

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 จริงๆ ลองใช้ตั้งแต่การใช้งานพื้นฐานไปจนถึงตัวอย่างการประยุกต์ใช้ที่หลากหลาย และดูว่าโค้ดทำงานอย่างไร การสัมผัสกับการทำงานของเงื่อนไขและวิธีการเขียนโค้ดที่มีประสิทธิภาพด้วยตัวเองจะช่วยให้เข้าใจได้ลึกซึ้งยิ่งขึ้น

侍エンジニア塾