gpt4 book ai didi

python - Python中条件表达式的求值顺序是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:48 24 4
gpt4 key购买 nike

我知道 Python 中的条件表达式是 X if C else Y,但我在使用它时遇到了一些问题。

我有两个代码要比较。

代码 1:

def fun(p):
if len(p) >= 2:
p[1] = 'Ok'
else:
p.append('Ok')
p = [1]
fun(p)
print p

代码 1 的输出:

[1, 'Ok']

代码 2:

def fun(p):
(p[1] = 'Ok') if (len(p) >= 2) else p.append('OK')

p = [1]
fun(p)
print p

代码 2 的输出:

    (p[1] = 'Ok') if (len(p) >= 2) else p.append('OK')
^
SyntaxError: invalid syntax

我知道在代码1中,其格式是“if C : X else: Y”,求值顺序是:

  1. C
  2. X

代码2抛出语法错误,原因可能是p[1]不存在。所以我猜格式“X if C else Y”的计算如下:

  1. X
  2. C

但这只是我的猜测。有谁知道代码 2 错误而代码 1 正确的真正原因?

最佳答案

SyntaxError 的原因是 Python 区分statementsexpressions

作业,比如

p[1] = 'Ok'

语句,不能是表达式的一部分,包括条件表达式。参见 What is the difference between an expression and a statement in Python?了解更多信息。

评估顺序不在其中——SyntaxError发生在任何代码被评估之前,当它被解析时。

if 语句和条件表达式中,求值顺序都是 ether

  1. 条件
  2. 真实陈述

  1. 条件
  2. 虚假陈述

所以,在

if condition:
true_statement
else:
false_statement

true_statement if condition else false_statement

根据条件的真实性,仅评估真实的 fase 语句。

关于python - Python中条件表达式的求值顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com