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

Python 从技术上讲,if语句是什么?,python,python-3.x,if-statement,conditional,conditional-statements,Python,Python 3.x,If Statement,Conditional,Conditional Statements,if语句是表达式还是简单的语句?有人能定义这两者吗?我听说它是一个条件表达式,但这让我很困惑,为什么它通常被称为if语句而不是表达式。if语句的示例 if x > 6: a = 3 else: a = 4 条件表达式示例:从= a = 3 if x > 6 else 4 这是两种完全不同的语言结构,但在这里它们实现了相同的功能 这里的条件表达式比if语句更紧凑。 但如果条件表达式变得更复杂,它们往往变得难以读取和调试,例如: x = (

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
    )

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
语句控制程序流(根据测试表达式的结果执行不同的套件):

也有一种东西叫做,;这将基于组成组件生成一个结果(其中包含的两个表达式之一将根据中间的条件表达式进行求值并返回其结果):

这两个概念是不同的;一个是语句(语言的顶级组件),另一个是表达式(因此生成结果)。它们有密切相关的语法(都使用
if
作为关键字,条件表达式中需要关键字
else
作为条件表达式,在
if
语句中是可选的),这两个语句都计算条件(
if
语句可以计算更多),但这就是它们之间关系结束的地方

或者,为了进一步强调这些差异:

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

    • 你混淆了两件不同的事情。Python代码由语句组成。语句可以包含表达式,表达式生成结果。表达式可以由更多表达式组成,表达式不能包含语句

      有一种东西叫做“一个”。
      if
      语句控制程序流(根据测试表达式的结果执行不同的套件):

      也有一种东西叫做,;这将基于组成组件生成一个结果(其中包含的两个表达式之一将根据中间的条件表达式进行求值并返回其结果):

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

      或者,为了进一步强调这些差异:

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

      if语句是一种语句。条件表达式(不是同一事物)是一个表达式。因此名称…一个
      if语句
      与一个
      条件表达式
      @byxor No一起使用,这是错误的。@byxor它仍然是错误的。if语句的计算结果不为任何值,它控制程序的流。条件表达式求值为某物,这就是为什么它是一个表达式。希望这有帮助。if语句就是一个语句。条件表达式(不是同一事物)是一个表达式。因此名称…一个
      if语句
      与一个
      条件表达式
      @byxor No一起使用,这是错误的。@byxor它仍然是错误的。if语句的计算结果不为任何值,它控制程序的流。条件表达式求值为某物,这就是为什么它是一个表达式。希望这有帮助。不,他们没有达到同样的效果。它们都测试一个条件,但是一个语句改变程序流,一个表达式产生一个值。这是一个很大的区别!语句不会产生值,表达式不会改变流。我的意思是,在这个特定的示例中,它们在功能上实现了相同的效果。但事实上,你提到的差异是问题的关键。@MartijnPieters虽然我同意在这个答案中可以更清楚地理解这一点,但我相信所说的是,这两个例子对
      a
      @juanpa.arrivillaga有相同的影响,但你不能使用条件表达式来选择要执行的语句,例如,在表达式中也不能使用
      if
      语句。雅克在我脑海中的两个例子中都添加了一个赋值语句,这让事情变得更糟了。@MartijnP