Raketenwilli: Python

Beitrag lesen

Aber die Betriebssystemabteilung von Microsoft sah das anders, sie waren vermutlich noch zu assemblerlastig und heilfroh, eine minimale Typisierung einführen zu können. Und so bekamen wir Namen wie hFile (was ok ist), aber dann auch dwCounter (dw = double word, ein 32-bit Wert) - und das ist in einer Hochsprache genauso sinnlos wie $arWords.

Bekannte Ausnahme: Python

  • Sequence Types: list, tuple, range (siehe unten)
  • Set Type: set, frozenset

Inhaltlich sind die erst einmal kaum zu unterscheiden, haben dann aber andere Eigenschaften hinsichtlich der vorhandenen/erlaubten Methoden, was in der Hochsprache Python eine solche Benennung vorteilhaft erscheinen lässt.

Man versuche:

import sys 
x = [ 1, 2, 3 ]
print( sys.getsizeof( x ), "Bytes" ) #88 Bytes
x.append( 4 )

vers.

import sys
y = ( 1, 2, 3 )
print( sys.getsizeof( y ) , "Bytes") #64 Bytes
y.append( 4 ) #AttributeError: 'tuple' object has no attribute 'append'

vers.

import sys
z = range( 1, 4 )
print( sys.getsizeof( z ) , "Bytes") #48 Bytes
z.append( 4 ) #AttributeError: 'range' object has no attribute 'append'

Andererseits sollte man das beim Programmieren seines Zeugs durchaus im Kopf behalten können und einige Sachen, wie z.B. der range, haben regelmäßig ein eher begrenztes Auftreten im Rahmen einer geringen Anzahl von Iterationen über denselben.

Hint: Die Ausgabe des reservierten Speichers zeigt warum das gemacht wird. Auch die jeweilige An- oder Abwesenheit von Methoden hat Auswirkungen auf die Laufzeit.