Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can I repeat the + in Python arbitrarily in a calculation?

Tags:

python

syntax

Today I have started to learn Python. The first things I learned were values, expressions and (arithmetic) operators. So far, everything makes sense, except one thing that I don not get:

While

2+2

evaluates to 4 (which makes sense),

2+

results in a SyntaxError (which also makes sense). But what – from my point of view – does not make sense is the following line of code:

2+++2

This results in 4 as well, and I wonder why. If I can compare this to JavaScript (which I use on a day-to-day basis), this results in an error in JavaScript.

So, two questions:

  1. Why does this not result in a syntax error?
  2. How does this expression get evaluated? What happens to the additional + signs?
like image 505
Golo Roden Avatar asked Sep 22 '18 11:09

Golo Roden


2 Answers

Python has an unary + operator - +2 will evaluate to 2. So, that expression is actually evaluated as:

2+(+(+2))

Which, of course, is 4.

like image 57
Mureinik Avatar answered Sep 28 '22 18:09

Mureinik


According to the official documentation here,

+2 # refers to 2

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

2++2 # same logic

2+2
4
like image 20
Ashutosh Chapagain Avatar answered Sep 28 '22 18:09

Ashutosh Chapagain