为什么在计算中可以在Python中任意重复+?

时间:2018-09-22 11:24:52

标签: python syntax

今天我已经开始学习Python。我学到的第一件事是值,表达式和(算术)运算符。到目前为止,一切都有意义,除了我没有得到的一件事:

2+2

评估为4(这很有意义),

2+

产生SyntaxError(这也很有意义)。但是,从我的角度来看, 没有意义的是以下代码行:

2+++2

这也会产生4,我想知道为什么。如果我可以将其与JavaScript(我每天使用的JavaScript)进行比较,则会导致JavaScript错误。

因此,有两个问题:

  1. 为什么这不会导致语法错误?
  2. 该表达式如何求值?额外的+符号会发生什么?

2 个答案:

答案 0 :(得分:10)

Python有一个unary + operator-+2的值为2。因此,该表达式实际上被评估为:

2+(+(+2))

当然是4

答案 1 :(得分:3)

根据官方文档here

+2 # refers to 2

2+++2# unary + has higher precedence than addition

2++2 # same logic

2+2
4