我正在浏览^{__len__
方法中。这样做的原因是什么?你知道吗
class X(object):
def __len__(self):
return 1 << 31
try:
len(X())
except OverflowError:
# 32-bit
MAXSIZE = int((1 << 31) - 1)
else:
# 64-bit
MAXSIZE = int((1 << 63) - 1)
del X
如果我没有错的话,同样的也可以缩短到下面,对吗?你知道吗
try:
1 << 31
except OverflowError:
# 32-bit
MAXSIZE = int((1 << 31) - 1)
else:
# 64-bit
MAXSIZE = int((1 << 63) - 1)
python3中的
int
是一个poly-glot类,它可以表示机器int和大int;这个特性超越了python2中int
和long
之间的区别。在python3上,构造int(1 << n)
从不抛出错误。你知道吗为了解决这个问题,six使用了一个巧妙的技巧,它迫使python将一些东西塞进机器大小的int中
或者,在Python3中,例外情况略有不同:
相关问题 更多 >
编程相关推荐