tags:

views:

497

answers:

8

What is the difference between the following codes?

code1

var=2**2*3

code2

var2=2*2*3

I see no difference. This raises the following question.

Why is the code1 used if we can use code2?

+18  A: 

Double stars (**) are exponentiation. So "2 times 2" and "2 to the power 2" are the same. Change the numbers and you'll see a difference.

eduffy
In fact, the double stars are pretty commonly used in any language where the carat (^) is reserved for bitwise XOR operations. I don't think I've seen double stars with any other meaning than exponentiation.
Mark Rushakoff
They were used in FORTRAN a long, long time ago.
David Thornley
Double star was introduced as power in Fortran which doesn't have bitwise operator symbols.
Martin Beckett
Curious fact: Google uses both ^ and **
OscarRyz
+1  A: 

2**2 = 2 power-of 2

2*2 = 2 times 2

James Brooks
+1  A: 

The ** operator in Python is really "power;" that is, 2**3 = 8.

ravuya
+17  A: 

try:

2**3*2

and

2*3*2

To see the difference.

**

Is the operator for "power of"

In your particular operation 2 power of 2 yields the same as 2 times 2.

OscarRyz
Thank you for your answer!
Masi
http://docs.python.org/reference/expressions.html#the-power-operator and http://docs.python.org/reference/expressions.html#binary-arithmetic-operations are important @Masi, consider reading them.
S.Lott
@S.Lott: Thank you for the links!
Masi
+6  A: 
  2**2 means 2 squared (2^2)
  2*2 mean 2 times 2 (2x2)

In this case they happen to have the same value, but...

  3**3*4 != 3*3*4
Jiaaro
+1  A: 

The top one is a "power" operator, so in this case it is the same as 2 * 2 equal to is 2 to the power of 2. If you put a 3 in the middle position, you will see a difference.

Greg Reynolds
+2  A: 

To specifically answer your question Why is the code1 used if we can use code2? I might suggest that the programmer was thinking in a mathematically broader sense. Specifically, perhaps the broader equation is a power equation, and the fact that both first numbers are "2" is more coincidence than mathematical reality. I'd want to make sure that the broader context of the code supports it being

var = x * x * y
in all cases, rather than in this specific case alone. This could get you in big trouble if x is anything but 2.

JohnMetta
+1  A: 

A double asterisk means to the power of. A single asterisk means multiplied by. 22 is the same as 2x2 which is why both answers came out as 4.

Andrew Marsh