กุยโด ฟาน รอสซุม
การใช้งานใหม่นั้นเหมือนกับตัวดำเนินการ "match" ที่มีอยู่ใน Scala, Rust และ F# ซึ่งเปรียบเทียบผลลัพธ์ของนิพจน์ที่ระบุกับรายการรูปแบบที่แสดงอยู่ในบล็อกตามตัวดำเนินการ "case" ต่างจากตัวดำเนินการ "switch" ที่มีอยู่ใน C, Java และ JavaScript นิพจน์ที่ใช้ "match" ให้ประโยชน์มากกว่ามาก
def http_error (สถานะ):
สถานะการแข่งขัน:
กรณีที่ 400:
ส่งคืน "คำขอไม่ถูกต้อง"
กรณี 401|403|404:
กลับ "ไม่ได้รับอนุญาต"
กรณีที่ 418:
กลับ "ฉันเป็นกาน้ำชา"
กรณี_:
กลับ "อย่างอื่น"
ตัวอย่างเช่น คุณสามารถแยกอ็อบเจ็กต์ สิ่งทูเพิล รายการ และลำดับที่ต้องการเพื่อผูกตัวแปรตามค่าที่มีอยู่ได้ อนุญาตให้กำหนดเทมเพลตที่ซ้อนกัน ใช้เงื่อนไข “if” เพิ่มเติมในเทมเพลต ใช้มาสก์ (“[x, y, *rest]”) การแมปคีย์/ค่า (เช่น {“bandwidth”: b, “latency ”: l} เพื่อแยกค่า "แบนด์วิธ" และ "เวลาแฝง" และพจนานุกรม) แยกเทมเพลตย่อย (": =" โอเปอเรเตอร์) ใช้ค่าคงที่ที่มีชื่อในเทมเพลต ในคลาส คุณสามารถปรับแต่งพฤติกรรมการจับคู่ได้โดยใช้เมธอด “__match__()”
จากคลาสข้อมูลนำเข้าคลาสข้อมูล
@ดาต้าคลาส
คะแนนชั้นเรียน:
x:int
ย:int
def ที่ไหน (จุด):
จุดแข่งขัน:
กรณีจุด (0, 0):
พิมพ์("ต้นกำเนิด")
กรณีจุด (0, y):
print(f»Y={y}»)
กรณีจุด (x, 0):
พิมพ์(f"X={x}")
กรณีจุด ():
print("ที่อื่น")
กรณี_:
print("ไม่ใช่จุด")
จุดแข่งขัน:
กรณี จุด(x, y) ถ้า x == y:
พิมพ์ (f "Y = X ที่ {x}")
กรณีจุด(x, y):
print(f"ไม่อยู่ในแนวทแยง")
แดง, เขียว, น้ำเงิน = 0, 1, 2
จับคู่สี:
กรณี .RED:
print("ฉันเห็นสีแดง!")
กรณี. สีเขียว:
print("หญ้าเป็นสีเขียว")
กรณี .BLU
E:
print(“ฉันรู้สึกเศร้า :(“)
มีการเตรียมชุดเพื่อตรวจสอบ
ที่มา: opennet.ru