2009-06-25 10 views
51

¿Cuál es la diferencia entre los siguientes códigos?¿Cuál es la diferencia entre "2 * 2" y "2 ** 2" en Python?

Code1:

var=2**2*3 

Código2:

var2=2*2*3 

veo ninguna diferencia. Esto plantea la siguiente pregunta.

¿Por qué se usa el código1 si podemos usar el código2?

+46

Cuando realiza pruebas con los números siguen estas reglas 2: utilizar sólo números primos (que estaban bien) y nunca utilizar 2 dos veces. –

Respuesta

114

Probar:

2**3*2 

y

2*3*2 

para ver la diferencia.

** es el operador de "potencia de". En su operación en particular, de 2 a la potencia de 2 produce el mismo que 2 veces 2.

+0

¡Gracias por tu respuesta! –

+8

http://docs.python.org/reference/expressions.html#the-power-operator y http://docs.python.org/reference/expressions.html#binary-arithmetic-operations son importantes @Masi, considere leyéndolos –

+0

@ S.Lott: ¡Gracias por los enlaces! –

30

Estrellas dobles (**) son exponenciación. Entonces "2 por 2" y "2 por potencia 2" son lo mismo. Cambia los números y verás una diferencia.

+6

De hecho, las estrellas dobles se usan comúnmente en cualquier idioma donde el quilate (^) está reservado para operaciones XOR en modo bit. No creo haber visto estrellas dobles con otro significado que la exponenciación. –

+2

Se usaron en FORTRAN hace mucho, mucho tiempo. –

+3

La estrella doble se introdujo como potencia en Fortran que no tiene símbolos de operador bit a bit. –

2

2 ** 2 = 2-potencia de 2

2 * 2 = 2 veces 2

2

El operador ** en Python es realmente "poder"; es decir, 2**3 = 8.

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

En este caso sucede que tiene el mismo valor, pero ...

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

La parte superior uno es un operador de "potencia", por lo que en este caso es igual a 2 * 2 igual a 2 a la potencia de 2. Si coloca un 3 en la posición media, verá una diferencia.

4

Para responder específicamente a su pregunta ¿Por qué se usa el código1 si podemos usar el código2? Podría sugerir que el programador estaba pensando en un sentido matemáticamente más amplio. Específicamente, quizás la ecuación más amplia sea una ecuación de poder, y el hecho de que ambos primeros números sean "2" es más una coincidencia que una realidad matemática. Me gustaría asegurarme de que el contexto más amplio del código sea compatible con

var = x * x * y
en todos los casos, en lugar de solo en este caso específico. Esto podría ocasionarle un gran problema si x no es más que 2.

1

Un doble asterisco significa poder. Un solo asterisco significa multiplicado por. 2 es el mismo que el 2x2 es la razón por la que las dos respuestas salió como

4.
1

Power tiene mayor precedencia que se multiplican, así:

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

para los estudiantes visuales ........ .................

enter image description here

Cuestiones relacionadas