2009-06-25 2 views
51

В чем разница между следующими кодами?В чем разница между «2 * 2» и «2 ** 2» в Python?

code1:

var=2**2*3 

code2:

var2=2*2*3 

Я не вижу никакой разницы. Возникает следующий вопрос.

Почему код1 используется, если мы можем использовать код2?

+46

При выполнении тестов с цифрами следующие 2 правила: использовать только простые числа (вы были в порядке), и никогда не использовать 2 раза. –

ответ

114

Try:

2**3*2 

и

2*3*2 

, чтобы увидеть разницу.

** является оператором «власти». В вашей конкретной операции, 2 в степени 2 дает такой же, как в 2 раза 2.

+0

Спасибо за ваш ответ! –

+8

http://docs.python.org/reference/expressions.html#the-power-operator и http://docs.python.org/reference/expressions.html#binary-arithmetic- операции важны @Masi, рассмотрим читая их. –

+0

@ S.Lott: Спасибо за ссылки! –

30

Двойные звезды (**) являются возвеличиванием. Таким образом, «2 раза 2» и «2 - мощность 2» одинаковы. Измените числа, и вы увидите разницу.

+6

На самом деле двойные звезды довольно часто используются на любом языке, где карат (^) зарезервирован для побитовых операций XOR. Я не думаю, что видел двойные звезды с любым другим значением, чем возведение в степень. –

+2

Они были использованы в FORTRAN долгое время назад. –

+3

Двойная звезда была введена как сила в Фортране, которая не имеет побитовых символов оператора. –

2

2 ** 2 = 2 мощности от 2

2 * 2 = 2 раза 2

2

** оператор в Python действительно "власть"; то есть 2**3 = 8.

12
2**2 means 2 squared (2^2) 
    2*2 mean 2 times 2 (2x2) 

В этом случае они, случается, имеют то же значение, но ...

3**3*4 != 3*3*4 
1

Верхн один является «силовым» оператором, поэтому в этом случае он совпадает с 2 * 2, равным 2, с мощностью 2. Если вы положите 3 в среднее положение, вы увидите разницу.

4

Чтобы ответить на ваш вопрос Почему код1 используется, если мы можем использовать код2? Я мог бы предположить, что программист думал в математически более широком смысле. В частности, возможно, более широкое уравнение является уравнением мощности, а тот факт, что оба первых числа являются «2», больше совпаден, чем математическая реальность. Я хотел бы убедиться, что в более широком контексте кода поддерживается это

var = x * x * y
во всех случаях, а не только в этом конкретном случае. Это может вызвать у вас большие проблемы, если x ничего, кроме 2.

1

Двойная звездочка означает мощность. Единая звездочка означает умножение. 2 такая же, как 2х2 поэтому оба ответа вышел как 4.

1

питания имеет больше приоритет, чем многократно, так:

2**2*3 = (2^2)*3 
2*2*3 = 2*2*3 
2

Для визуального учащихся ........ .................

enter image description here

Смежные вопросы