为什么1 +++ 2 = 3?

udp*_*nil 28 python evaluation operator-precedence

Python如何评估表达式1+++2

我介绍了多少+,它是打印3作为答案.请任何人都可以解释这种行为

因为1--2它是印刷3,因为1---2它是印刷-1

Gre*_*ill 58

你的表达方式与:

1+(+(+2))
Run Code Online (Sandbox Code Playgroud)

可以在任何数字表达式之前-使其为负数,或者+不执行任何操作(对称性存在该选项).带负号:

1-(-(2)) = 1-(-2)
         = 1+2
         = 3
Run Code Online (Sandbox Code Playgroud)

1-(-(-2)) = 1-(2)
          = -1
Run Code Online (Sandbox Code Playgroud)

我看到你澄清了你的问题,说你来自C背景.在Python中,有没有增加运营商如++--在C,这可能是你的问题的根源.要增加或减少变量,i或者j在Python中使用以下样式:

i += 1
j -= 1
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句:这是Python创作者的设计决定.它应该完全禁止编写像i +++ j这样的不确定代码. (3认同)

Bri*_*ndy 14

额外的+不是增量器(如++中的++ a或++).他们只是表明这个数字是积极的.

没有这样的++运算符.但是有一个一元+运算符和一元运算符.一元+运算符对其参数没有影响.一元 - 运算符否定其运算符或将其乘以-1.

+1
Run Code Online (Sandbox Code Playgroud)

- > 1

++1
Run Code Online (Sandbox Code Playgroud)

- > 1

这与+(+(1))相同

   1+++2
Run Code Online (Sandbox Code Playgroud)

- > 3因为它与1 +(+(+(2))相同

同样,你可以做--1表示 - (-1),即+1.

  --1
Run Code Online (Sandbox Code Playgroud)

- > 1

为了完整性,没有*一元的opeartor.所以*1是一个错误.但是有一个**运算符,它有两个参数.

 2**3
Run Code Online (Sandbox Code Playgroud)

- > 8