以下代码并不报错,而我理解在"point 1"处如果先运算小括号里面的表达式,而y并不存在,不应该报错吗?难道发现x == 10的短路运算优先于小括号里面的表达式运算?
将这一行中x == 10改为x == 100后报错了,这个理解没问题。
# coding: utf-8
if __name__ == "__main__":
x = 100
if x == 10:
y = 200
# no y exist here
if x == 10 and (y - 1 == 199): # point 1
print "ok"
Kira dari kiri ke kanan
Kurungan tidak mengubah fakta ini
Ini adalah perkara biasa. Adalah disyorkan untuk membaca siaran ini:
Idea teras dan dan atau operasi dalam Python ——— logik litar pintas
Dalam contoh anda,
and
sebelumx == 10
ialahFalse
, jadi semua ungkapanand
berikutnya adalah dilitar pintas sehinggaor
muncul dan ungkapan di sebelah kiriand
adalah output ke Sebelah kirior
mengambil bahagian dalam operasi logik seterusnya, tetapi ia tidak ditemui, jadi ungkapanand
di sebelah kanan(y - 1 == 199)
diabaikan secara langsung, yang bersamaan dengan udaraJika anda menukar
x == 10
kepadax == 100
, maka bahagian kiriand
ialahTrue
Ungkapan di sebelah kanan tidak boleh dilitar pintaskan dan perlu mengambil bahagian dalam operasi logik. kerana pembolehubah tempatany
belum Dibuat, jadi ralat akan dilaporkan Kandungan ralat sepatutnya serupa dengan ini1!!!!!!!!!!!!!!!!!!!!!!!