涉及逻辑运算的python表达式的运算顺序
高洛峰
高洛峰 2017-04-18 09:31:29
0
3
411

以下代码并不报错,而我理解在"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"
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(3)
伊谢尔伦

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 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
巴扎黑

1!!!!!!!!!!!!!!!!!!!!!!!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan