Python `truthy` dan `falsy`

Python `truthy` dan `falsy`

Artikel ini menerangkan tentang Python truthy dan falsy.

YouTube Video

Python truthy dan falsy

Definisi truthy dan falsy

Dalam Python, objek yang dinilai dalam ungkapan bersyarat dianggap sebagai 'True' atau 'False'. Truthy merujuk kepada objek yang dinilai sebagai 'True', dan falsy merujuk kepada objek yang dinilai sebagai 'False'. Penilaian ini sering digunakan dalam cabang bersyarat seperti pernyataan if atau gelung while. Selain itu, fungsi bool() menerima sebarang objek dan mengembalikan nilai Boolean-nya.

Falsy (Objek yang dinilai sebagai False)

Dalam Python, objek-objek berikut dianggap sebagai falsy:.

  • False

  • None

  • Nilai sifar numerik

    • Contoh: 0, 0.0
  • Jenis jujukan kosong (seperti senarai kosong, tuple kosong, atau rentetan kosong)

    • Contoh: [], (), ""
  • Kamus kosong

    • Contoh: {}
  • Set kosong

    • Contoh: set()

Objek-objek ini dinilai sebagai 'falsy' apabila digunakan dalam syarat penyataan if. Sebagai contoh, anda boleh menulis kod seperti ini.

1if not []:
2    print("The list is falsy.")
  • Dalam kod ini, senarai [] adalah kosong, jadi ia dinilai sebagai falsy, dan penyataan print dijalankan.

Truthy (Objek yang dinilai sebagai True)

Objek yang tidak dianggap falsy dianggap sebagai truthy.

  • Nombor bukan sifar (integer, nombor titik terapung)

    • Contoh: 1, 3.14, -100
  • Jenis urutan yang tidak kosong (senarai, tuple, rentetan, dll.)

    • Contoh: [1, 2, 3], (1, 2), "Hello"
  • Kamus yang tidak kosong

    • Contoh: {"key": "value"}
  • Set yang tidak kosong

    • Contoh: {1, 2, 3}

Objek yang dianggap truthy akan dievaluasi sebagai 'True' apabila digunakan dalam syarat arahan if. Sebagai contoh, anda boleh menulis kod seperti ini.

1if [1, 2, 3]:
2    print("The list is truthy.")
  • Dalam kod di atas, kerana senarai [1, 2, 3] tidak kosong, ia dievaluasi sebagai truthy dan arahan print akan dilaksanakan.

Menilai nilai Boolean dengan fungsi bool()

Anda boleh menilai nilai Boolean objek dengan menggunakan fungsi bool().

 1# Examples of falsy values
 2print("False is", "truthy" if bool(False) else "falsy")
 3print("0 is", "truthy" if bool(0) else "falsy")
 4print('"" is', "truthy" if bool("") else "falsy")
 5print("None is", "truthy" if bool(None) else "falsy")
 6print("[] is", "truthy" if bool([]) else "falsy")
 7
 8# Examples of truthy values
 9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
  • Kod ini menunjukkan bagaimana nilai kebenaran bagi pelbagai nilai dinilai. Sebagai contoh, nilai berangka 0 dan rentetan kosong dianggap False, manakala ruang atau rentetan "0" dianggap True.

Menggunakan truthy dan falsy

Dengan menggunakan truthy dan falsy, kod boleh ditulis dengan lebih ringkas dan intuitif. Khususnya, penyataan if sering boleh dinilai tanpa perbandingan eksplisit untuk menjadikannya lebih singkat. Sebagai contoh, dua kod berikut berfungsi dengan cara yang sama, tetapi yang pertama lebih ringkas.

1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5    print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9    print("The list is not empty.")

Dalam contoh di atas, anda dapat melihat bahawa my_list dinilai sebagai truthy selagi ia bukan senarai kosong, yang menghapuskan keperluan untuk perbandingan eksplisit.

Mereka bentuk dengan truthy dan falsy

Dengan menggunakan konsep truthy dan falsy secara berkesan, anda dapat meningkatkan kebolehbacaan dan kecekapan kod. Ia sangat berguna untuk menetapkan nilai lalai, memeriksa kesahihan pembolehubah, dan pengesahan input. Sebagai contoh, jika anda menjangka None atau senarai kosong akan dihantar sebagai argumen, anda boleh menulis kod seperti ini.

1def process_data(data=None):
2    data = data or []
3    print(data)
4
5process_data()  # An empty list is used by default.
  • Dalam kod ini, jika data adalah None, senarai kosong [] akan ditetapkan sebagai nilai lalai. Dengan cara ini, penggunaan truthy dan falsy membolehkan anda menetapkan nilai lalai dengan ringkas.

Perkara yang perlu diberi perhatian untuk mengelakkan tingkah laku yang tidak diingini

Namun, walaupun kod yang menggunakan nilai truthy dan falsy boleh menjadi ringkas dan mudah, anda perlu sedar bahawa ia mungkin menyebabkan tingkah laku yang tidak diingini. Sebagai contoh, dalam kod ini, bukan sahaja apabila data adalah None, tetapi juga jika ia adalah sebarang nilai yang dievaluasi sebagai False, seperti rentetan kosong atau 0, ia akan digantikan dengan senarai kosong [] sebagai lalai. Oleh sebab itu, apabila syarat yang lebih ketat diperlukan, seperti inisialisasi hanya apabila nilai adalah None, adalah disarankan untuk menggunakan syarat jelas seperti value is None:. Bergantung pada situasi, adalah penting untuk mereka bentuk dengan mengambil kira keseimbangan antara ringkasan dan ketelitian.

1def process_data(data=None):
2    if data is None:
3        data = []
4    print(data)
5
6process_data()   # An empty list is used by default.
7process_data(0)  # 0 is printed because it's not None.
  • Dalam kod ini, data akan dimulakan sebagai senarai kosong hanya jika ia adalah None, manakala nilai-nilai palsu lain seperti 0 akan dibiarkan seperti sedia ada.

Mengawal nilai Boolean dalam objek tersuai

Malah dalam kelas anda sendiri, anda boleh mengawal nilai Boolean satu instans dengan mendefinisikan __bool__() atau __len__().

 1class MyContainer:
 2    def __init__(self, items):
 3        self.items = items
 4
 5    def __len__(self):
 6        return len(self.items)
 7
 8box = MyContainer([])
 9print(bool(box))  # False
10
11box.items.append("item")
12print(bool(box))  # True
  • Dalam kod ini, kaedah __len__() menyebabkan bekas dinilai sebagai False apabila ia kosong, dan True apabila ia mempunyai elemen.

Kesimpulan

Konsep truthy dan falsy dalam Python sangat penting untuk menulis ungkapan bersyarat dengan ringkas dan menjadikan kod lebih intuitif. Memahami dan menggunakan konsep ini dengan betul dapat meningkatkan keterbacaan dan kecekapan kod dengan ketara.

Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.

YouTube Video