4 回答
TA贡献1789条经验 获得超8个赞
是的,这是可能的,并且没有低级的黑客或作弊:
>>> a = 0
>>> b = 9**99 % 9**99
>>> type(a) == type(b) == int
True
>>> a + 1 == b + 1 == 1
True
>>> a is b
False
我正在使用Python 3.8.1在本地执行此操作,但是您也可以在 repl.it 和 www.python.org/shell/ 上重现它。
对于小阳性:
>>> a = 7
>>> b = (9**99 + a) % 9**99
>>> b, type(b), a == b, a is b
(7, <class 'int'>, True, False)
对于小底片:
>>> a = -2
>>> b = (9**99 + a) % -9**99
>>> b, type(b), a == b, a is b
(-2, <class 'int'>, True, False)
TA贡献1943条经验 获得超7个赞
这可能不是问题的意图,但如果允许重写,则可以满足问题中的3个断言,以便以下代码将通过:int
int = type('', (int,), dict(vars(int)))
a = int(0)
b = int(0)
assert type(a) == type(b) == int
assert a + 1 == b + 1 == 1
assert a is not b
TA贡献1794条经验 获得超8个赞
我能够让以下内容为CPython工作:
import ctypes
x = 2
y = 3
ctypes.c_int.from_address(id(y) + 24).value = x
print(x == y) # True
print(x is y) # False
我无法逃脱或不崩溃口译员。x = 0x = 1
添加回答
举报