Pengendali logik Python dan, atau, dan bukan (konjungsi logik, disjungsi, penolakan)

Perniagaan

Python menyediakan operator logik untuk melaksanakan operasi logik (Boolean).(and,or,not)
Ia digunakan untuk menerangkan hubungan antara berbilang keadaan dalam pernyataan if.

Bahagian ini menerangkan perkara berikut.

  • persimpangan:and
  • tambah logik:or
  • penafian:not
  • and,or,notKeutamaan pengendali

Di samping itu, perkara-perkara berikut dijelaskan sebagai amaran.

  • Pengendali logik untuk objek jenis selain bool
  • and,orNilai pulangan ini tidak semestinya jenis bool.
  • Litar pintas (penilaian litar pintas)

persimpangan:and

dan mengembalikan hasil logik dua nilai.

print(True and True)
# True

print(True and False)
# False

print(False and True)
# False

print(False and False)
# False

Malah, ia sering digunakan bukan untuk benar atau salah, tetapi untuk ungkapan bersyarat menggunakan pengendali perbandingan. Untuk makluman anda, operator perbandingan adalah seperti berikut.

  • <
  • >
a = 10
print(0 < a)
# True

print(a < 100)
# True

print(0 < a and a < 100)
# True

dan boleh dirangkaikan seperti berikut.

print(0 < a < 100)
# True

tambah logik:or

atau mengembalikan OR logik daripada dua nilai.

print(True or True)
# True

print(True or False)
# True

print(False or True)
# True

print(False or False)
# False

penafian:not

not” mengembalikan penolakan nilai; benar dan salah diterbalikkan.

print(not True)
# False

print(not False)
# True

and,or,notKeutamaan pengendali

Susunan keutamaan pengendali logik ini adalah seperti berikut: bukan adalah yang tertinggi.

  1. not
  2. and
  3. or

Dalam kod sampel berikut, ungkapan di atas ditafsirkan seolah-olah ia adalah yang di bawah. Memandangkan tiada masalah dengan kurungan tambahan, mungkin lebih mudah untuk menerangkannya dengan jelas dalam kes seperti contoh ini.

print(True or True and False)
# True

print(True or (True and False))
# True

Jika anda ingin beroperasi atau sebelum dan, gunakan kurungan().

print((True or True) and False)
# False

<,>Pengendali perbandingan ini mempunyai keutamaan yang lebih tinggi daripada tidak. Oleh itu, kurungan tidak diperlukan untuk setiap operasi perbandingan, seperti yang berlaku dalam contoh di atas.

print(0 < a and a < 100)
# True

Lihat dokumentasi rasmi di bawah untuk ringkasan keutamaan pengendali dalam Python.

Pengendali logik untuk objek jenis selain bool

With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.

Objek berikut dianggap palsu dalam operasi logik Python.

  • Pemalar ditakrifkan sebagai palsu:None,false
  • Sifar dalam jenis angka:0,0,0j,Decimal(0),Fraction(0, 1)
  • Urutan atau koleksi kosong:',(),[],{},set(),range(0)

Semua nilai lain dianggap benar.

Fungsi bool() boleh digunakan untuk mendapatkan nilai boolean objek. Ambil perhatian bahawa rentetan ‘0’ atau ‘Salah’ dianggap benar.

print(bool(10))
# True

print(bool(0))
# False

print(bool(''))
# False

print(bool('0'))
# True

print(bool('False'))
# True

print(bool([]))
# False

print(bool([False]))
# True

Untuk mengendalikan ‘0’ atau ‘false’ dalam rentetan sebagai palsu, gunakan distutils.util.strtobool().

and,orNilai pulangan ini tidak semestinya jenis bool.

Berikut ialah contoh objek selain daripada jenis bool, menunjukkan hasil setiap operator pada nilai berangka.

x = 10  # True
y = 0  # False

print(x and y)
# 0

print(x or y)
# 10

print(not x)
# False

Seperti yang anda boleh lihat daripada contoh di atas, dan dan atau dalam Python jangan kembalikan benar atau salah bagi jenis bool, tetapi kembalikan nilai di sebelah kiri atau kanan bergantung pada sama ada ia benar atau palsu. Contohnya adalah angka, tetapi perkara yang sama berlaku untuk jenis lain seperti rentetan dan senarai. Secara kebetulan, tidak mengembalikan benar atau salah bagi jenis bool.

Takrifan nilai pulangan dan dan atau adalah seperti berikut.

The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.

6.11. Boolean operations — Expressions — Python 3.10.1 Documentation

Apabila nilai ungkapan kiri dan kanan adalah benar dan palsu secara berasingan, nilai pulangan mudah difahami. Sebaliknya, jika kedua-duanya benar atau kedua-duanya palsu, nilai pulangan akan berbeza bergantung pada pesanan.

Jika anda menggunakannya sebagai ungkapan bersyarat dalam pernyataan if, dsb., hasilnya dinilai sebagai nilai boolean dan diproses, jadi anda tidak perlu risau mengenainya, tetapi jika anda menggunakan nilai pulangan untuk pemprosesan selanjutnya, anda perlu berhati-hati.

x = 10  # True
y = 100  # True

print(x and y)
# 100

print(y and x)
# 10

print(x or y)
# 10

print(y or x)
# 100
x = 0  # False
y = 0.0  # False

print(x and y)
# 0

print(y and x)
# 0.0

print(x or y)
# 0.0

print(y or x)
# 0

print(bool(x and y))
# False

Jika anda ingin menganggapnya sebagai benar atau salah, anda boleh lakukan seperti dalam contoh terakhir.
bool(x and y)

Nilai pulangan dan dan atau diringkaskan dalam jadual di bawah.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

Litar pintas (penilaian litar pintas)

Seperti yang anda boleh lihat daripada jadual di atas, jika x adalah salah dalam x dan y, atau jika x adalah benar dalam x atau y, nilai pulangan akan menjadi x tanpa mengira nilai y.

Dalam kes sedemikian, y tidak dinilai.

and,orAmbil perhatian bahawa jika anda memanggil fungsi atau kaedah di sebelah kanan proses ini untuk melakukan beberapa pemprosesan, proses itu mungkin tidak dapat dilaksanakan bergantung pada keputusan di sebelah kiri.

def test():
    print('function is called')
    return True

print(True and test())
# function is called
# True

print(False and test())
# False

print(True or test())
# True

print(False or test())
# function is called
# True
Copied title and URL