我假设这个数字(2^63 - 1)是python可以处理的最大值,或者存储为变量.但这些命令似乎工作正常:
>>> sys.maxsize
9223372036854775807
>>> a sys.maxsize + 1
>>> a
9223372036854775808
Run Code Online (Sandbox Code Playgroud)
那么有什么意义吗?如果计算结果允许,Python可以处理任意大的数字吗?
请注意,这是我的版本的打印输出:
>>> sys.version
3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]'
Run Code Online (Sandbox Code Playgroud)
Boa*_*les 17
Python可以在计算中处理任意大的整数.在软件中处理任何大于64位(或任何基础硬件限制)的整数.出于这个原因,Python 3没有sys.maxint常量.
sys.maxsize另一方面,该值报告平台的指针大小,并限制Python的数据结构(如字符串和列表)的大小.
\n\n一个整数,给出 Py_ssize_t 类型的变量可以采用的最大值。它\xe2\x80\x99在32位平台上通常为2**31 - 1,在64位平台上通常为2**63 - 1。蟒蛇3
\n
\n\n平台\xe2\x80\x99s Py_ssize_t 类型支持的最大正整数,因此列表、字符串、字典和许多其他容器可以具有的最大大小。蟒蛇2
\n
Py_ssize_t?它是一种索引类型(用于索引事物的数字类型,例如列表)。它是 size_t 的有符号版本(来自 C 语言)。
\nsize_t因为我们想支持负索引,在Python中我们可以这样做my_list[-4:]。因此Py_ssize_t提供了一个范围之间的负数和正数。_t类型,告知开发人员这size_t是类型名称,而不是变量。只是一个约定。Py_ssize_t?为什么要限制列表、字符串、字典的大小?Py_ssize_t.Py_ssize_t用作哈希。Python 在其字典实现中不使用链表,它使用开放寻址/探测,如果发现冲突,我们会以系统的方式找到另一个位置来查找键并放置值。所以在 Python 中你不能拥有比Py_ssize_t字典更多的内容。在所有实际情况下(64 位机器,也可能是您),在达到最大内存之前,您将耗尽内存Py_ssize_t。尝试dict.fromkeys(range(sys.maxsize + 5))从未到达那里,它只会减慢我的计算机速度。
| 归档时间: |
|
| 查看次数: |
12003 次 |
| 最近记录: |