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

以下代码并不报错,而我理解在"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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(3)
伊谢尔伦

左から右に計算します

括弧を付けてもこの事実は変わりません

いいねを押す +0
左手右手慢动作

これは正常です。この投稿を読むことをお勧めします。

Python の and および or 演算の中心的な考え方 ——— 短絡ロジック

この例では、and の前の x == 10False であるため、後続のすべての and 式は or が表示されるまで短絡され、and の左側の式が出力されます。 or の左側は次の論理演算に参加しますが、見つからないため、and の右側の式 (y - 1 == 199) は直接無視されます。これは、空気

と同等です。

x == 10x == 100 に変更すると、and の左側は True になります。このとき、右側の式は短絡できず、論理演算に参加する必要があります。ローカル変数 y が作成されていないため、エラーの内容はこの

と同様になるはずです。 リーリー
いいねを押す +0
巴扎黑

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート