gpt4 book ai didi

python - Python中的空元组是 "constant"吗

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:40 24 4
gpt4 key购买 nike

<分区>

我想让我的代码更有(内存)效率。现在我们有很多函数将可迭代对象作为参数,例如:

def foo(para,meter,iterable):
#...
pass

有时我们必须为它提供一个空列表才能正常工作:foo(14,25,[])。问题是每次构造一个新列表时:需要在堆上分配,一个列表似乎有64字节内存(在我自己的机器上,用sys.getsizeof([])测试) 而只有空元组需要(可能一次)48 个字节。

因此我想知道空元组是否是常量。由于元组是不可变的,因此可以很容易地使长度为 0 的元组(因此 ())成为程序中的常量。这将减少“构建时间”(实际上没有构建时间,因为它只会设置对常量的引用)并减少分配的内存量。

我的问题是,关于 Python 解释器(即任何流行的解释器)是否可以保证空元组确实是一个常量,因此 () 不需要构建时间,也不需要分配额外的内存。

id(..) 测试似乎支持了确实只有一个零元组的理论:

>>> id(())
140290183798856
>>> a = ()
>>> id(a)
140290183798856

但有可能在运行时 Python 解释器出于某种原因 fork 元组。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com