Seite 2 von 2
Re: Slicing & Copy
Verfasst: Mittwoch 18. Januar 2012, 17:03
von nomnom
CPython 2.7.2:
Pypy 2.7.1:
Re: Slicing & Copy
Verfasst: Mittwoch 18. Januar 2012, 17:06
von BlackJack
@snafu: Innerhalb einer Python-Implementierung und Version gibt es da sicher ein System hinter, aber es ist eben implementierungsabhängig und etwas worauf man sich nicht verlassen kann. Mein letztes `id()`-Beispiel würde unter Jython zum Beispiel `False` ergeben, weil die IDs dort anders zustande kommen als bei CPython. Das gleiche gilt bei der Frage unter welchen Umständen gleiche Zeichenketten auch die selben Zeichenketten sind.
Re: Slicing & Copy
Verfasst: Mittwoch 18. Januar 2012, 23:33
von bords0
In der Doku steht die Funktion "intern" erklärt:
http://docs.python.org/library/function ... ern#intern. Nur Python < 3.0.
("f" + "o" + "o" wird übrigens schon vom Compiler zum Literal "foo" optimiert (je nach Python-Version), deshalb kommt etwa anderes heraus als bei "".join("foo").)
Re: Slicing & Copy
Verfasst: Donnerstag 19. Januar 2012, 13:31
von nomnom
Was für ein Compiler? Interpreter meinst du wohl …

Re: Slicing & Copy
Verfasst: Donnerstag 19. Januar 2012, 13:41
von Hyperion
nomnom hat geschrieben:Was für ein Compiler? Interpreter meinst du wohl …

Vorsicht! Python hat natürlich auch eine Compiler-Komponente - denn der Interpreter liest und versteht lediglich speziellen Bytecode. Man spricht idR. einfach vom Python-"Interpreter", wenn man ein Python-Programm ausführen möchte. Intern wird dieses vor dem eigentlichen Abarbeiten (="interpretieren") in Bytecode übersetzt. Tatsächlich ist also anzunehmen, dass die Compiler-Komponente an dieser Stelle optimiert und optimierten Bytecode erzeugt, der dann von der eigentlichen Interpreter-Komponente ausgeführt wird.
Re: Slicing & Copy
Verfasst: Donnerstag 19. Januar 2012, 17:12
von nomnom
Hyperion hat geschrieben:Vorsicht! Python hat natürlich auch eine Compiler-Komponente - denn der Interpreter liest und versteht lediglich speziellen Bytecode. Man spricht idR. einfach vom Python-"Interpreter", wenn man ein Python-Programm ausführen möchte. Intern wird dieses vor dem eigentlichen Abarbeiten (="interpretieren") in Bytecode übersetzt. Tatsächlich ist also anzunehmen, dass die Compiler-Komponente an dieser Stelle optimiert und optimierten Bytecode erzeugt, der dann von der eigentlichen Interpreter-Komponente ausgeführt wird.
Das war mir beim Schreiben auch bewusst, aber bei Python „vom Compiler“ zu sprechen war mir nicht spezifisch genug …
Re: Slicing & Copy
Verfasst: Donnerstag 19. Januar 2012, 22:44
von bords0
@nomnom: Wenn es dir bewusst war, dass das beim Compilieren passiert, warum willst du dann, dass man Interpreter dazu sagt? Versteh ich nicht.
Re: Slicing & Copy
Verfasst: Donnerstag 19. Januar 2012, 23:28
von nomnom
bords0 hat geschrieben:@nomnom: Wenn es dir bewusst war, dass das beim Compilieren passiert, warum willst du dann, dass man Interpreter dazu sagt? Versteh ich nicht.
Das habe ich nie behauptet. Allerdings war es mir klar, dass der Interpreter auch erstmal das Programm zu Bytecode kompiliert.