Python 数量限制

Posted

技术标签:

【中文标题】Python 数量限制【英文标题】:Python Number Limit 【发布时间】:2011-07-25 03:35:42 【问题描述】:

我知道,如果不是所有的编程语言,整数,浮点数等都具有它们可以容纳的最大数量,无论是无符号的还是有符号的。比如pascal的int类型最多只能容纳32768~。

我想知道的是,python 的 int 和浮点变量的限制是什么。我尝试了一个小程序来产生非常大的数字,但我没有遇到任何错误。它甚至对这些变量的大小有限制吗?

我查看了文档,但找不到我要查找的内容:/

非常感谢您的帮助,谢谢!

【问题讨论】:

找不到 IEEE 浮点信息? docs.python.org/tutorial/floatingpoint.html 好像很清楚。 Python 使用 64 位浮点数(双精度 IEEE754)和无限(嗯,只要您的计算机可以处理)整数长度。 【参考方案1】:

早期版本对int 有限制,但现在已删除,因此您可以说没有限制,这取决于您计算机的内存。检查this article。

【讨论】:

一个 tl;dr 版本:小的 Python 整数适合平台的机器字(例如 32 位)。如果一个数字不合适,它会自动提升为一个“长”整数,只要您的 RAM 允许。你不能真的有整数溢出。如果你想打包精确的位数(例如与 C 代码接口),你 import struct, ctypes. 虽然知道它仅受内存限制很有趣,但了解 Python 如何在内部实现大数的存储和算术运算也很有趣。我记得有一篇博客提到数字以2^30 为基数存储,但这意味着存在限制。在您的回答中,您是否还可以链接到任何解释,以提供有关内部实施的一些见解?对于任何 Pythonista 来说,这将是一个惊人的信息!【参考方案2】:

在早期版本的 Python 中,int 曾经有一个限制。但是,由于 Python 将整数视为对象,因此将其删除。因此,尽管 Python 为值对象引用所指向的值分配了 32 位,但当值超过 2^32 时,它可以一直向上移动到您计算机上 RAM 的大小。

【讨论】:

【参考方案3】:

查看 sys 模块:

import sys
dir(sys)
print sys.maxint
help(sys.float_info)

等等。

【讨论】:

python3 的 sys.maxsize【参考方案4】:

这个document 提供了很好的起点,例如sys.float_info

【讨论】:

以上是关于Python 数量限制的主要内容,如果未能解决你的问题,请参考以下文章

Python 通过Semaphore来限制多线程活动数量

限制python中组合/排列的数量

如何在 asyncio python 中使用 subprocess 模块限制并发进程的数量

如何在不定义任何限制的情况下在 python 中获取任意数量的输入?

pandas DataFrame 中的“列”数量限制为 1024

MongoDB in 数量限制