【发布时间】:2017-11-12 11:43:08
【问题描述】:
我的理解:
- long() 将始终返回 long
- int() 将返回一个 int 或 long(如果它太大)
- 因此 int() 足以根据其值动态获取 int/long
所以除非上面的(1)(2)(3)不正确,为什么还需要long()? int() 什么时候完成工作? 跳过所有数字范围的 long() 会伤害我吗?
参考文档:
类 int(x=0)
返回由数字或字符串 x 构造的整数对象,或 如果没有给出参数,则返回 0。如果 x 是一个数字,它可以是一个 普通整数、长整数或浮点数。如果 x 是 浮点,转换截断为零。如果论据 超出整数范围,函数返回一个长对象 而是。
类长(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将结果强制为 long int(扩展精度),无论大小。所以int(1)和long(1)不一样。在 Python 3 中,区别更多的是内部的,但在 Python 2 中,当您显示数字时,差异是显而易见的。 -
有趣的是,
int值在溢出时会自动更改为long...pastebin.com/5PeprCEi -
查看python.org/dev/peps/pep-0237 了解一些历史(但请注意,那里提出的内容与实际实施的内容不完全匹配)。选择曾经很重要,但没有理由关心自 Python 2.3 以来
int与long之间的区别。 -
@TomKarzes:在 Python 3 中根本没有真正的区别,无论是内部的还是其他的。 Python 3 int 实现中没有隐藏优化的“short” int 类型:一切都是“long” int。
-
那么3+版本就没有long了?
标签: python python-2.6