我是 Python 的新手,我正在阅读这个页面,在那里我看到了一个奇怪的声明:
if n+1 == n: # catch a value like 1e300 raise OverflowError("n too large")
x 等于一个比它大的数?!我感觉到原力的干扰。
我知道在 Python 3 中,整数没有固定的字节长度。因此,没有整数溢出,就像 C 的int
工作方式一样。但是当然内存不能存储无限数据。
我认为这就是为什么结果n+1
可以与n
:Python 无法分配更多内存来执行求和的原因,因此它被跳过,并且n == n
是正确的。那是对的吗?
如果是这样,这可能会导致程序的错误结果。当操作不可能时,为什么 Python 不引发错误,就像 C++ 一样std::bad_alloc
?
即使n
不是太大并且检查评估为假,result
- 由于乘法 - 将需要更多字节。能result *= factor
不能出于同样的原因?
我在官方 Python 文档中找到了它。检查大整数/可能的整数“溢出”真的是正确的方法吗?
慕哥9229398
尚方宝剑之说
ibeautiful
相关分类