Seltsames Python-Verhalten

7

Ich war gelangweilt und spielte mit der ipython-Konsole herum und stieß auf folgendes Verhalten, das ich nicht wirklich verstehe

%Vor%

Die Antwort auf [4] ist nicht 4294967296L, es ist eine sehr lange Zahl, aber ich kann nicht wirklich herausfinden, warum.

Die Nummer finden Sie hier: Ссылка

(Ubuntu 8.10, python 2.5.2, ipython 0.8.4)
(Mac OS X 10.5.6, Python 2.5.1)

    
fforw 12.05.2009, 15:36
quelle

5 Antworten

16

Python läuft bei der mathematischen Potenzoperation von rechts nach links. Zum Beispiel macht IN [2]:

2 ** (4) = 16

IN [3] = 2 2 2 2 = 2 2 ** (4) = 2 ** 16 = 65536

Sie benötigen Klammern, wenn Sie von links nach rechts berechnen möchten. Der Grund, warum OUT [4] die gewünschte Antwort nicht ausgibt, liegt darin, dass die Zahl astronomisch ist und Python sie nicht ausdrucken kann.

2 ^ 65536 = extrem groß

    
AlbertoPL 12.05.2009, 15:42
quelle
7

Der Vorrang des Operators ** bewirkt, dass die Auswertung von rechts nach links (anstelle der erwarteten von links nach rechts) verläuft. Mit anderen Worten:

%Vor%     
Martin Cote 12.05.2009 15:44
quelle
4

Dies liegt daran, dass die Rangfolge in Python dazu führt, dass diese Gleichung von rechts nach links ausgewertet wird.

%Vor%     
HanClinto 12.05.2009 15:45
quelle
4

Wie die anderen Antworten bereits gesagt haben, liegt das daran, dass ** von rechts nach links ausgewertet wird. Hier ist der Dokumentationslink , in dem alle Präzedenzfälle beschrieben werden.

    
nikow 12.05.2009 20:15
quelle
3

Wenn wir von rechts nach links auswerten, sehen wir uns die Schritte an, die Python durchläuft, um diese Antworten zu erhalten:

%Vor%     
Smashery 12.05.2009 15:46
quelle

Tags und Links