Keutamaan dan Keterkaitan Pengendali di Python

Dalam tutorial ini, anda akan mengetahui bagaimana keutamaan dan kaitan operator mempengaruhi susunan operasi di Python.

Keutamaan Pengendali Python

Kombinasi nilai, pemboleh ubah, operator, dan panggilan fungsi disebut sebagai ungkapan. Jurubahasa Python dapat menilai ungkapan yang sah.

Sebagai contoh:

 >>> 5 - 7 -2

Inilah 5 - 7ungkapan. Terdapat lebih daripada satu pengendali dalam ekspresi.

Untuk menilai jenis ungkapan ini terdapat peraturan yang diutamakan dalam Python. Ia membimbing urutan operasi ini.

Sebagai contoh, pendaraban mempunyai keutamaan yang lebih tinggi daripada pengurangan.

 # Multiplication has higher precedence # than subtraction >>> 10 - 4 * 2 2

Tetapi kita boleh mengubah susunan ini menggunakan tanda kurung ()kerana ia mempunyai keutamaan yang lebih tinggi daripada pendaraban.

 # Parentheses () has higher precedence >>> (10 - 4) * 2 12

Keutamaan pengendali di Python disenaraikan dalam jadual berikut. Ia berada dalam urutan menurun (kumpulan atas mempunyai keutamaan yang lebih tinggi daripada yang lebih rendah).

Pengendali Makna
() Tanda kurung
** Eksponen
+x, -x,~x Unary plus, Unary minus, Bitwise TIDAK
*, /, //,% Pendaraban, Pembahagian, Pembahagian lantai, Modulus
+, - Penambahan, Pengurangan
<<, >> Pengendali peralihan bitwise
& Sedikit demi sedikit DAN
^ Bitwise XOR
| Sedikit demi sedikit ATAU
==, !=, >, >=, <, <=, is, is not, in,not in Perbandingan, Identiti, Keahlian pengendali
not Logik TIDAK
and Logik DAN
or Logik ATAU

Mari lihat beberapa contoh:

Katakan kita sedang membina if… elseblok yang berjalan ifketika makan tengah hari adalah buah atau sandwic dan hanya jika wang lebih dari atau sama dengan 2.

 # Precedence of or & and meal = "fruit" money = 0 if meal == "fruit" or meal == "sandwich" and money>= 2: print("Lunch being delivered") else: print("Can't deliver lunch")

Pengeluaran

 Makan tengah hari sedang disampaikan

Program ini berjalan iflancar walaupun wangnya 0. Tidak memberi kita output yang diingini kerana keutamaan andlebih tinggi daripada or.

Kita boleh mendapatkan output yang diinginkan dengan menggunakan kurungan ()dengan cara berikut:

 # Precedence of or & and meal = "fruit" money = 0 if (meal == "fruit" or meal == "sandwich") and money>= 2: print("Lunch being delivered") else: print("Can't deliver lunch")

Pengeluaran

 Tidak dapat menghantar makan tengah hari

Keterkaitan Pengendali Python

Kita dapat melihat dalam jadual di atas bahawa lebih daripada satu pengendali wujud dalam kumpulan yang sama. Pengendali ini mempunyai keutamaan yang sama.

Apabila dua pengendali mempunyai keutamaan yang sama, keterkaitan membantu menentukan susunan operasi.

Keterkaitan adalah urutan di mana ungkapan dinilai yang mempunyai banyak pengendali yang mempunyai keutamaan yang sama. Hampir semua pengendali mempunyai kaitan kiri-kanan

Contohnya, pendaraban dan pembahagian lantai mempunyai keutamaan yang sama. Oleh itu, jika kedua-duanya hadir dalam ekspresi, yang kiri dinilai terlebih dahulu.

 # Left-right associativity # Output: 3 print(5 * 2 // 3) # Shows left-right associativity # Output: 0 print(5 * (2 // 3))

Pengeluaran

 3 0

Catatan : Pengendali eksponen **mempunyai kaitan antara kanan ke kiri di Python.

 # Shows the right-left associativity of ** # Output: 512, Since 2**(3**2) = 2**9 print(2 ** 3 ** 2) # If 2 needs to be exponated fisrt, need to use () # Output: 64 print((2 ** 3) ** 2)

Kita dapat melihat bahawa 2 ** 3 ** 2setara dengan 2 ** (3 ** 2).

Pengendali bukan bersekutu

Beberapa pengendali seperti pengendali tugasan dan operator perbandingan tidak mempunyai kaitan dalam Python. Terdapat peraturan yang berasingan untuk urutan pengendali jenis ini dan tidak boleh dinyatakan sebagai kesatuan.

Contohnya, x < y < ztidak bermaksud (x < y) < zatau tidak x < (y < z). x < y < zsetara dengan x < y and y < z, dan dinilai dari kiri ke kanan.

Selanjutnya, walaupun rantai tugas seperti x = y = z = 1berlaku dengan sempurna, x = y = z+= 2akan mengakibatkan kesilapan.

 # Initialize x, y, z x = y = z = 1 # Expression is invalid # (Non-associative operators) # SyntaxError: invalid syntax x = y = z+= 2

Pengeluaran

 Fail "", baris 8 x = y = z + = 2 SyntaxError: sintaks tidak sah

Artikel menarik...