2009-06-25 30 views
51

Qual è la differenza tra i seguenti codici?Qual è la differenza tra "2 * 2" e "2 ** 2" in Python?

code1:

var=2**2*3 

code2:

var2=2*2*3 

Non vedo alcuna differenza. Questo solleva la seguente domanda.

Perché il codice 1 viene utilizzato se è possibile utilizzare il codice 2?

+46

quando si fanno le prove con i numeri seguono queste 2 regole: usare solo numeri primi (si erano ok) e non usare mai due volte. –

risposta

114

Prova:

2**3*2 

e

2*3*2 

per vedere la differenza.

** è l'operatore per "potenza di". Nella vostra particolare operazione, 2 alla potenza di 2 produce la stessa di 2 volte 2.

+0

Grazie per la risposta! –

+8

http://docs.python.org/reference/expressions.html#the-power-operator e http://docs.python.org/reference/expressions.html#binary-arithmetic-operations sono importanti @Masi, considerare leggendoli –

+0

@ S.Lott: Grazie per i collegamenti! –

30

Le doppie stelle (**) sono esponenziate. Quindi "2 volte 2" e "2 alla potenza 2" sono uguali. Cambia i numeri e vedrai una differenza.

+6

In effetti, le doppie stelle sono comunemente utilizzate in qualsiasi lingua in cui il carat (^) è riservato per operazioni XOR bit a bit. Non penso di aver visto stelle doppie con un significato diverso da quello dell'esponenziazione. –

+2

Sono stati utilizzati in FORTRAN molto, molto tempo fa. –

+3

La stella doppia è stata introdotta come alimentazione in Fortran che non dispone di simboli operatore bit a bit. –

2

2 ** 2 = 2 potenze di 2

2 * 2 = 2 volte 2

2

Il ** operatore in Python è veramente "potenza;" ovvero, 2**3 = 8.

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

In questo caso può capitare che abbiano lo stesso valore, ma ...

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

Il top uno è un operatore di "potenza", quindi in questo caso è uguale a 2 * 2 uguale a 2 alla potenza di 2. Se metti un 3 nella posizione centrale, vedrai una differenza.

4

Per rispondere in modo specifico alla domanda Perché il codice 1 viene utilizzato se è possibile utilizzare il codice 2? Potrei suggerire che il programmatore stava pensando in un senso matematicamente più ampio. Specificamente, forse l'equazione più ampia è un'equazione di potenza, e il fatto che entrambi i primi numeri siano "2" è più una coincidenza che una realtà matematica. Vorrei assicurarmi che il più ampio contesto del codice supporti il ​​fatto che sia

var = x * x * y
in tutti i casi, piuttosto che in questo caso specifico. Questo potrebbe portarti grossi guai se x è qualsiasi cosa ma 2.

1

Un doppio asterisco indica la potenza di. Un singolo asterisco significa moltiplicato per. 2 è lo stesso di 2x2 che è il motivo per cui entrambe le risposte è venuto fuori come 4.

1

Power ha la precedenza rispetto moltiplicano, così:

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

Per studenti visivo ........ .................

enter image description here

Problemi correlati