Di samping jawaban lain yang menyebutkan prioritas not
lebih rendah daripada in
, sebenarnya pernyataan Anda setara dengan:
not (True in [False, True])
Tetapi perhatikan bahwa jika Anda tidak memisahkan kondisi Anda dari yang lain, python akan menggunakan 2 peran ( precedence
atau chaining
) untuk memisahkannya, dan dalam hal ini python menggunakan prioritas. Juga, perhatikan bahwa jika Anda ingin memisahkan suatu kondisi Anda harus meletakkan semua kondisi dalam tanda kurung bukan hanya objek atau nilai:
(not True) in [False, True]
Tapi seperti yang disebutkan, ada modifikasi lain oleh python pada operator yang chaining :
Berdasarkan dokumentasi python :
Perhatikan bahwa perbandingan, tes keanggotaan, dan tes identitas, semua memiliki hak yang sama dan memiliki kiri ke kanan chaining fitur seperti yang dijelaskan di bagian Perbandingan.
Misalnya hasil dari pernyataan berikut adalah False
:
>>> True == False in [False, True]
False
Karena python akan mem-chain pernyataan seperti berikut:
(True == False) and (False in [False, True])
Yang tepatnya False and True
itu False
.
Anda dapat mengasumsikan bahwa objek pusat akan dibagi antara 2 operasi dan objek lainnya (Salah dalam kasus ini).
Dan perhatikan bahwa ini juga berlaku untuk semua Perbandingan, termasuk tes keanggotaan dan operasi tes identitas yang mengikuti operan:
in, not in, is, is not, <, <=, >, >=, !=, ==
Contoh:
>>> 1 in [1,2] == True
False
Contoh terkenal lainnya adalah rentang angka:
7<x<20
yang sama dengan:
7<x and x<20