Am 04.07.2012, 21:37 Uhr, schrieb Paul Rubin <phr-2...@nightsong.com>:
I just came across this (https://gist.github.com/1208215):
import sys
import ctypes
pyint_p = ctypes.POINTER(ctypes.c_byte*sys.getsizeof(5))
five = ctypes.cast(id(5), pyint_p)
print(2 + 2 == 5) # False
five.contents[five.contents[:].index(5)] = 4
print(2 + 2 == 5) # True (must be sufficiently large values of 2
there...)
Heh. The author is apparently anonymous, I guess for good reason.
Neat.
Playing with it, i'm wondering:
This:
import sys
import ctypes
pyint_p = ctypes.POINTER(ctypes.c_byte*sys.getsizeof(5))
five = ctypes.cast(id(5), pyint_p)
five.contents[five.contents[:].index(5)] = 4
print ( 2 + 2 == 5 )
print 5
print 5 - 2
put into a script and run prints:
True
4
3
while entered at the python prompt it prints:
True
4
2
??
Regards,
Michael
--
http://mail.python.org/mailman/listinfo/python-list