从技术上讲,什么是 if 语句?

What is an if statement technically?

if 语句是表达式还是简单的语句?有人可以定义这两者吗?我听说它是​​一个条件表达式,但这让我很困惑为什么它通常被称为 if 语句而不是表达式。

if 语句示例

if x > 6:
    a = 3
else:
    a = 4

条件表达式示例:=

右边的部分
a = 3 if x > 6 else 4

这是两种完全不同的语言结构,但在这里它们实现的是相同的。

这里的条件表达式比if语句更紧凑。 但是如果条件表达式变得更复杂,它们往往会变得难以阅读和调试,例如:

    x = (
            self.intervalWidthNode.old + self.parent.phaseModule.deltaXyNode.new [0] / self.parent.phaseModule.pixelsPerUnitXyNode.new [0]
        if (
            isinstance (self.imageFactoryNode.new, mk.AllColorsImageFactory) and
            self.parent.phaseModule.deltaXyNode.triggered and
            self.parent.phaseModule.inTransferAreaXyNode.new == (False, False)
        ) else
            self.imageFactoryNode.new.intervalWidth
        if (
            isinstance (self.imageFactoryNode.new, mk.AllColorsImageFactory) and
            self.imageFactoryNode.touched
        ) else
            self.intervalWidthNode.old
    )

你混淆了两个不同的东西。 Python 代码由语句组成。语句 可以 包含表达式,表达式产生一个结果。表达式可以由多个表达式组成,表达式不能包含语句。

if statement这样的东西。 if 语句控制程序的流程(根据测试表达式的结果执行不同的套件):

if sometest:
    # execute if sometest is true
elif someothertest:
    # execute if sometest was false and someothertest is true
else:
    # execut if both sometest and someothertest are false

还有一个conditional expression;这会根据组成部分产生一个结果(根据中间的条件表达式计算其中包含的两个表达式之一并返回其结果):

# will produce either the outcome of true_expression or false_expression
true_expression if sometest else false_expression

这两个概念是不同的;一个是语句(语言的顶级组件),另一个是表达式(因此产生结果)。它们具有密切相关的语法(都使用 if 作为关键字,关键字 else 在条件表达式中是必需的,在 if 语句中是可选的),都评估条件(if 语句可以评估更多),但这就是他们关系的终点。

或者,进一步强调差异:

  • if 语句中的套件可以容纳更多语句。您可以使用 if 语句在两个函数定义或两个 类 之间进行选择,或者选择要导入的内容。你不能在表达式中这样做,因为表达式不能包含语句。
  • 条件表达式可以是更大表达式的一部分,但不能将语句放在表达式中。所以你可以使用条件表达式来微调表达式。