Rumah > Soal Jawab > teks badan
以下代码并不报错,而我理解在"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"
ringa_lee2017-04-18 09:33:29
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
sebelum x == 10
ialah False
, jadi semua ungkapan and
berikutnya adalah dilitar pintas sehingga or
muncul dan ungkapan di sebelah kiri and
adalah output ke Sebelah kiri or
mengambil bahagian dalam operasi logik seterusnya, tetapi ia tidak ditemui, jadi ungkapan and
di sebelah kanan (y - 1 == 199)
diabaikan secara langsung, yang bersamaan dengan udara
Jika anda menukar x == 10
kepada x == 100
, maka bahagian kiri and
ialah True
Ungkapan di sebelah kanan tidak boleh dilitar pintaskan dan perlu mengambil bahagian dalam operasi logik. kerana pembolehubah tempatan y
belum Dibuat, jadi ralat akan dilaporkan Kandungan ralat sepatutnya serupa dengan ini
NameError: name 'y' is not defined