Warum sind diese beiden Aussagen nicht gleichwertig?Warum ist -2 ** 2 == -4 aber math.pow (-2, 2) == 4.0?
>> math.pow(-2,2)
4.0
>> -2 ** 2
-4
Python 3.5.3 (Standard, 19. Januar 2017, 14.11.04)
Warum sind diese beiden Aussagen nicht gleichwertig?Warum ist -2 ** 2 == -4 aber math.pow (-2, 2) == 4.0?
>> math.pow(-2,2)
4.0
>> -2 ** 2
-4
Python 3.5.3 (Standard, 19. Januar 2017, 14.11.04)
Die Reihenfolge der Ausführung der Betreiber (Operator Vorrang) zählt hier: mit -2**2
, die Potenzierung von 2 bis zuerst wird die Potenz 2 ausgeführt, dann das negative Vorzeichen.
Verwenden Klammer das gewünschte Ergebnis
(-2) ** 2 = 4
Sie können überprüfen, den Vorrang von the Python3 documentation zu erhalten.
-2 ** 2
berechnet als: -(2**2)
= -4
.
weil der Vorrang der '-' hinter dem Vorrang von '**' ist, verwenden (-2) ** 2 berechnen -2 auf dem ersten
Die Antwort ist: https: //docs.python .org/3.5/reference/expressions.html # operator-precedence. '**' hat eine höhere Priorität als das unäre negative '-'. Außerdem ist '**' recht assoziativ. In der Praxis bedeutet Rechtsassoziativität, dass "a ** b ** c = a ** (b ** c)". – nbro