cari

Rumah  >  Soal Jawab  >  teks badan

涉及逻辑运算的python表达式的运算顺序

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

membalas semua(3)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:29

    Kira dari kiri ke kanan

    Kurungan tidak mengubah fakta ini

    balas
    0
  • ringa_lee

    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

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:33:29

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

    balas
    0
  • Batalbalas