【问题标题】:Why is this i = (a += 2) giving SyntaxError in Python? [duplicate]为什么这 i = (a += 2) 在 Python 中给出 SyntaxError? [复制]
【发布时间】:2020-02-11 05:13:33
【问题描述】:

我正在尝试在 python 中执行exec('global expression_result; expression_result = %s' % "a += 2")

它给了我SyntaxError。我已经声明了变量a and expression_result

在 ipython 中,我也试过i = (a += 2) 这也是给SyntaxError

如何对这些表达式求值并得到结果?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    首先,您不应该使用execeval。几乎从不需要这些功能中的任何一个。

    其次,赋值(例如,a+=2)在 Python 中不是表达式(与 C、C++ 或 Java 不同)。它没有值,无法打印或进一步分配。根据其他评论者的建议,您可以将代码分成两个作业:

    a += 2
    i = a
    

    【讨论】:

      【解决方案2】:

      += 符号不能这样做。

      但如果你把它写完整,它就可以工作。

      i = a = a + 2
      

      所以删除i = a += 2 这基本上是i = a = a + 2 的快捷方式

      【讨论】:

        【解决方案3】:

        正如其他答案所指出的,a += 2 不是 Python 中的表达式,因此无法将其写入预期表达式的位置(例如,另一个赋值的右侧)。

        如果您确实想将赋值写成表达式,这可以从 Python 3.8 开始使用 walrus operator,但您只能将其用于简单赋值,而不是复合赋值:

        expression_result = (a := a + 2)
        

        【讨论】:

          【解决方案4】:

          我重新创建了您的代码,并且出现了语法错误,您可以使用两行代码吗?:

          i = a
          i += 2
          

          【讨论】:

            【解决方案5】:

            你在找这个吗:

            a+=2
            i=a
            

            【讨论】:

              猜你喜欢
              • 2019-04-17
              • 2020-05-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-02-13
              • 2021-12-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多