Wenn du deinen Python-Nachlass mit ein wenig Pfeffer würzen willst, empfiehlt es sich, die „Definition eines Integers“ zu ändern. Wenn du in Python eine Zahl verwendest, nehmen wir die 30, verwendet Python die 30 als Referenz auf ein Objekt im Speicher, in dem wiederum der Wert 30 hinterlegt wird. Die 30 ist also ein Verweis auf ein Objekt, das den tatsächlichen Wert enthält. In der Regel sollten Verweis und Wert gleich sein, sonst wird das mit der Mathematik schwierig.
Schwierig? Das mögen Nerds doch!
Mit dieser Funktion kannst du einen derartigen Verweis anpassen und einen abweichenden Wert hinterlegen:
import ctypes
def reference(val):
return ctypes.cast(id(val), ctypes.POINTER(ctypes.c_int))
Und so aktivierst du den „Spaß“:
reference(30)[6] = 100
Willst du nun mit der Ziffer 30 mathematische Operationen durchführen, erzeugt das interessante Ergebnisse:
>>> 30 * 10
>>> 1000
Viel Spaß beim Debuggen!
Zusammenfassung
Eine humorvolle Demonstration aus der 'Nerd Enzyklopädie', die zeigt, wie man in Python die interne Darstellung von Integer-Objekten mittels 'ctypes' manipuliert. Der Artikel präsentiert ein Code-Beispiel, das dazu führt, dass eine scheinbar einfache Multiplikation wie '30 * 10' ein unerwartetes Ergebnis von '1000' liefert, und warnt vor den daraus resultierenden Debugging-Herausforderungen.
Hauptthemen: Python Speichermanagement Programmierung Debugging Nerd-Kultur
Schwierigkeitsgrad: advanced
Lesezeit: ca. 5 Minuten