Code: Alles auswählen
>>>2**5 is 2**5
True
>>> 2**10 is 2**10
False
Code: Alles auswählen
>>>2**5 is 2**5
True
>>> 2**10 is 2**10
False
Code: Alles auswählen
i = j = 0
while i is j:
i += 1
j += 1
print i
Code: Alles auswählen
>>> i = j = 0
>>> while i is j:
... i += 1
... j += 1
...
>>> print i
257
>>> 257 is 257
True
>>> 258 is 258
True
Code: Alles auswählen
>>> 30000 is 30000
True
Code: Alles auswählen
>>> 256+1 is 256+1
False
Code: Alles auswählen
>>> def a(): return 30000 is 30000
>>> dis.dis(a)
1 0 LOAD_CONST 1 (30000)
3 LOAD_CONST 1 (30000)
6 COMPARE_OP 8 (is)
9 RETURN_VALUE
>>> def a(): return 256+1 is 256+1
>>> dis.dis(a)
1 0 LOAD_CONST 3 (257)
3 LOAD_CONST 4 (257)
6 COMPARE_OP 8 (is)
9 RETURN_VALUE
>>> def a(): return 257-1 is 257-1
>>> dis.dis(a)
1 0 LOAD_CONST 3 (256)
3 LOAD_CONST 4 (256)
6 COMPARE_OP 8 (is)
9 RETURN_VALUE
Code: Alles auswählen
256 == 256
Code: Alles auswählen
256 is 256
Nun ja, mein Gedanke war jetzt schon, darauf zu achten, dass mögliche Ergebnisse 256 nicht überschreiten, damit ich eben den performanteren is-Operator einsetzen kann.BlackJack hat geschrieben:Das sollte aber speziell Leute die gerne optimieren bevor das Programm fertig ist , jetzt nicht dazu verleiten zu schauen wo sie überall ``is`` einsetzen könnten, denn im Zweifelsfall liefert das zwar schneller ein Ergebnis aber ein potentiell *falsches* Ergebnis.
Dir ist klar dass wir hier von Interpreter spezifischem Verhalten reden womit du allerhöchstens kaputten Code produzierst?mutetella hat geschrieben:Nun ja, mein Gedanke war jetzt schon, darauf zu achten, dass mögliche Ergebnisse 256 nicht überschreiten, damit ich eben den performanteren is-Operator einsetzen kann.
Ich glaube, dass er sich fragt, ob die Technik, zwecks Beschleunigung bestimmte Exemplare "kleiner" Objekte vorzuhalten, so wie es bei "int" oder "str" der Fall ist, nur auf den Interpreter beschränkt ist, oder auch generell in Python-Quelltext Anwendung findet.BlackJack hat geschrieben:@mutetella: Den letzten Beitrag verstehe ich nicht!?
Ahh… bloß nicht. Das ist ein Implementierungsdetail, auf das man sich auf keinen Fall verlassen sollte. Verwende `is` nur, wenn du wirklich auf die Identität testen will, sonst nicht.mutetella hat geschrieben:Bitte, steinigt mich jetzt nicht...
Kann man davon ausgehen, dass
schneller verarbeitet wird alsCode: Alles auswählen
256 == 256
Code: Alles auswählen
256 is 256
Genau, das meinte ich. Allerdings nicht "zwecks Beschleunigung", sondern weil es keine andere/bessere Möglichkeit gibt.lunar hat geschrieben:Ich glaube, dass er sich fragt, ob die Technik, zwecks Beschleunigung bestimmte Exemplare "kleiner" Objekte vorzuhalten, so wie es bei "int" oder "str" der Fall ist, nur auf den Interpreter beschränkt ist, oder auch generell in Python-Quelltext Anwendung findet.BlackJack hat geschrieben:@mutetella: Den letzten Beitrag verstehe ich nicht!?
Schon klar, das ist bei mir angekommen und ich versuch' auch, rechtzeitig die Kurve zu bekommen... Aus Gründen der Performance den is-Operator einem == vorzuziehen war jetzt auch eher ein doofer Witz von mir.lunar hat geschrieben:mutetella, auf die Gefahr hin, mich zu wiederholen, sage ich Dir, dass es nichts wird mit Dir und Deinen Programmen, wenn Du Dich weiterhin so zwanghaft um solche Kleinigkeiten sorgst. Nichts für ungut ...
Wie gesagt, das war jetzt eher ein nicht ernst gemeinter Hinweis auf tief verwurzelte Performance-Phopie, die auf Zeiten zurückzuführen ist, in denen ich Stunden und Tage damit verbracht hatte, verschiedenste Kombinationen von LoadHigh (LH) Anweisungen in meiner autoexec.bat zu testen.DasIch hat geschrieben:Dir ist klar dass wir hier von Interpreter spezifischem Verhalten reden womit du allerhöchstens kaputten Code produzierst?
Du kannst vim wie jeden anderen (brauchbaren) Editor dazu einstellen Leerzeichen statt Tabs zu verwenden. Meine Python spezifischen Einstellungen findest du z.B. hiermutetella hat geschrieben:@snafu: Vierfache Verschachtelungstiefe ist ein toller Tipp, danke! Allerdings macht mir dieses ständige 16xLeertaste-gehacke echt Schwierigkeiten! Aber da gibt's bestimmt ein VIM-Script für. Ich google das mal...
Fuer den Fall, dass das ernst gemeint war:mutetella hat geschrieben:@snafu: Vierfache Verschachtelungstiefe ist ein toller Tipp, danke! Allerdings macht mir dieses ständige 16xLeertaste-gehacke echt Schwierigkeiten! Aber da gibt's bestimmt ein VIM-Script für. Ich google das mal...
Code: Alles auswählen
set tabstop=4, expandtab