Guido van Rossum
Pelaksanaan baharu adalah sama seperti pengendali "padanan" yang disediakan dalam Scala, Rust, dan F#, yang membandingkan hasil ungkapan tertentu dengan senarai corak yang disenaraikan dalam blok berdasarkan operator "kes". Tidak seperti pengendali "suis" yang tersedia dalam C, Java dan JavaScript, ungkapan berasaskan "padanan" menawarkan lebih banyak lagi
def http_error(status):
status perlawanan:
kes 400:
kembalikan "Permintaan buruk"
kes 401|403|404:
kembali "Tidak dibenarkan"
kes 418:
kembali "Saya teko"
kes_:
kembalikan "Sesuatu yang lain"
Contohnya, anda boleh membongkar objek, tupel, senarai dan jujukan arbitrari untuk mengikat pembolehubah berdasarkan nilai sedia ada. Ia dibenarkan untuk menentukan templat bersarang, menggunakan syarat “jika” tambahan dalam templat, menggunakan topeng (“[x, y, *rehat]”), pemetaan kunci/nilai (contohnya, {“lebar jalur”: b, “latensi ”: l} untuk mengekstrak nilai dan kamus "lebar jalur" dan "kependaman", ekstrak subtemplat (":=" operator), gunakan pemalar bernama dalam templat. Dalam kelas, adalah mungkin untuk menyesuaikan tingkah laku padanan menggunakan kaedah "__match__()".
daripada kelas data import kelas data
@dataclass
Mata kelas:
x:int
y:int
def whereis(point):
mata perlawanan:
Titik kes(0, 0):
print("Asal")
Titik kes(0, y):
cetak(f"Y={y}")
Titik kes(x, 0):
cetak(f"X={x}")
Titik kes():
print("Di tempat lain")
kes_:
print("Bukan titik")
mata perlawanan:
kes Titik(x, y) jika x == y:
cetak(f"Y=X pada {x}")
Titik kes(x, y):
print(f"Bukan pada pepenjuru")
MERAH, HIJAU, BIRU = 0, 1, 2
warna padan:
kes .MERAH:
print("Saya nampak merah!")
kes .HIJAU:
print("Rumput hijau")
kes .BLU
E:
print(“Saya rasa biru :(“)
Satu set telah disediakan untuk semakan
Sumber: opennet.ru