我的理解:
- long()总是返回一个长整型
- int()将返回一个整数或一个长整型(如果它太大)
- 因此,int()足以根据其值动态获取一个整数/长整型
所以,除非上述(1)(2)(3)不正确,为什么需要long()?当int()可以胜任时?跳过所有数字范围的long()会伤害我吗?
参考文档:
class int(x=0)
从数字或字符串 x 构造一个整数对象,如果没有给出参数则返回 0。如果 x 是数字,它可以是普通整数、长整数或浮点数。如果 x 是浮点数,则转换会向零截断。如果参数超出整数范围,则函数返回一个长整数对象。
class long(x=0)
从字符串或数字 x 构造一个长整数对象。如果参数是一个字符串,则它必须包含可能带符号的任意大小的数字,可能嵌入在空白中。基数参数的解释方式与 int() 相同,只有当 x 是字符串时才能给出。否则,参数可以是普通整数、长整数或浮点数,将返回具有相同值的长整数。将浮点数转换为整数时截断(向零)。如果没有给出参数,则返回 0L。
代码实验
number = int(number_string) # cast it to integer
print number, "\t", type(number)
number = long(number_string) # cast it to long
print number, "\t", type(number)
long
强制结果为长整型(扩展精度),无论大小。因此int(1)
和long(1)
不同。在 Python 3 中,这种区别更多是内部的,但在 Python 2 中,当您显示数字时,差异是可见的。 - Tom Karzesint
值溢出时会自动转换为long
... https://pastebin.com/5PeprCEi - Attieint
和long
的区别已经不太需要在意了。 - Mark Dickinson