Pernyataan Switch Python

Pengantar

Pernyataan switch adalah alat yang ampuh dan nyaman untuk mengontrol aliran program Anda. Ini memungkinkan Anda dengan cepat dan mudah membuat banyak cabang kode, tergantung pada nilai variabel atau ekspresi yang diberikan. Ini biasanya digunakan ketika Anda perlu menjalankan logika yang berbeda tergantung pada nilai variabel yang diberikan, yang dapat memiliki lebih dari 2 (tetapi jumlah terbatas) nilai.

Pada artikel ini, kita akan mengeksplorasi bagaimana menggunakan pernyataan switch di Python dan membahas kelebihannya dibandingkan struktur kontrol lainnya. Baik Anda baru mengenal Python atau developer berpengalaman, pernyataan switch dapat membantu Anda menulis kode yang lebih bersih dan lebih efisien.

Sebelum v3.10

Sebelum pernyataan switch Python tersedia secara native dalam bahasa, pemrogram harus menggunakan struktur kontrol lain untuk mencapai fungsi yang sama. Salah satu pendekatan umum adalah dengan menggunakan serangkaian pernyataan if-else, dengan setiap cabang kode diasosiasikan dengan nilai yang berbeda dari variabel yang sedang diuji.

Misalnya, pertimbangkan kode berikut:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

Dalam kode ini, kami menggunakan pernyataan if-else untuk menentukan cabang kode mana yang akan dieksekusi berdasarkan nilai variabel value. Jika value sama dengan "foo", cabang kode pertama akan dieksekusi. Jika value sama dengan "bar", cabang kode kedua akan dieksekusi. Jika tidak, kode di else blok akan dieksekusi.

Meskipun pendekatan ini berhasil, pendekatan ini dapat dengan cepat menjadi sulit karena jumlah nilai yang mungkin untuk variabel meningkat. Selain itu, dapat membuat kode sulit dibaca dan dipahami.

Pendekatan lain yang dapat digunakan untuk membuat pernyataan seperti sakelar di Python adalah dengan menggunakan kamus. Dalam pendekatan ini, kunci kamus adalah nilai yang mungkin dari variabel yang diuji, dan nilainya adalah cabang kode yang sesuai.

Misalnya, pertimbangkan kode berikut:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

Dalam kode ini, kami telah mendefinisikan kamus bernama switch, dengan kunci yang mewakili kemungkinan nilai variabel value. Untuk setiap kunci, kami telah menetapkan fungsi lambda sebagai nilai, yang berisi cabang kode yang sesuai. Untuk mengeksekusi cabang kode yang sesuai, kami menggunakan get() metode kamus, yang memungkinkan kita menentukan nilai default untuk digunakan jika kunci yang diberikan tidak ada di kamus.

Meskipun pendekatan ini lebih fleksibel dan kompak daripada menggunakan pernyataan if-else, masih sulit untuk dibaca dan dipahami, terutama jika kode di setiap cabang rumit. Selain itu, ini membutuhkan penggunaan fungsi lambda, yang dapat membingungkan beberapa pemrogram. Kami tidak menyarankan menggunakan metode ini kecuali karena alasan tertentu Anda tidak dapat menggunakan metode lain dalam artikel ini.

Dengan diperkenalkannya pernyataan switch Python di Python v3.10, pemrogram sekarang memiliki cara yang lebih nyaman dan intuitif untuk mengontrol alur program mereka berdasarkan nilai variabel atau ekspresi yang diberikan. Di bagian selanjutnya, kita akan mengeksplorasi cara menggunakan pernyataan switch yang sebenarnya di Python.

Grafik match/case Pernyataan (setelah v3.10)

Setelah Python v3.10, pernyataan switch ditangani menggunakan match kata kunci. Kata kunci ini digunakan untuk membuat ekspresi pencocokan pola, yang memungkinkan Anda menguji nilai variabel atau ekspresi tertentu terhadap rangkaian pola. Jika kecocokan ditemukan, cabang kode yang sesuai dijalankan.

Misalnya, pertimbangkan kode berikut:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Dalam kode ini, kita menggunakan match kata kunci untuk membuat ekspresi pencocokan pola, yang menguji nilai variabel value terhadap serangkaian pola. Jika value sama dengan "foo", cabang kode pertama akan dieksekusi. Jika value sama dengan "bar", cabang kode kedua akan dieksekusi. Jika tidak, kode di blok else akan dieksekusi.

Gagal

Salah satu perbedaan utama antara pernyataan switch dalam Python dan pernyataan switch tradisional dalam bahasa lain adalah bahwa Python match pernyataan tidak mendukung fall-through. Dengan kata lain, setelah kecocokan ditemukan dan cabang kode yang sesuai dijalankan, match ekspresi berakhir dan tidak ada kode lain di match pernyataan dieksekusi. Dalam bahasa lain, ini biasanya dicapai dengan menggunakan the break kata kunci, yang tidak diperlukan atau didukung di sini.

Jika Anda ingin mencapai perilaku yang sama seperti fall-through dalam pernyataan switch tradisional, Anda dapat menggunakan the | operator untuk mencocokkan beberapa kasus. Operator ini memungkinkan Anda menentukan beberapa pola sekaligus case, dan salah satu pola dapat dicocokkan untuk memicu eksekusi cabang tersebut.

Misalnya, pertimbangkan kode berikut:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

Di sini, jika nilai value sama dengan โ€œyaโ€ or "y", cabang kode pertama akan dieksekusi. Ini setara dengan perilaku fall-through dalam pernyataan switch tradisional.

Default

Seperti yang mungkin Anda perhatikan dari contoh di atas, kasus "default" ditangani menggunakan garis bawah (_). Ini dianggap sebagai โ€œwildcardโ€ dan cocok dengan semua nilai. Jika salah satu kasus sebelumnya cocok dengan nilainya, maka cabang kode default akan dilewati dan tidak dieksekusi.

Kesimpulan

Seperti yang Anda lihat, pernyataan Python match (alias "switch") menawarkan cara yang ampuh dan nyaman untuk mengontrol aliran program Anda. Baik Anda baru mengenal Python atau developer berpengalaman, pernyataan switch dapat membantu Anda menulis kode yang lebih bersih dan lebih efisien.

Stempel Waktu:

Lebih dari penyalahgunaan