gpt4 book ai didi

python - str在Python中是如何实现的?

转载 作者:太空狗 更新时间:2023-10-30 02:12:19 26 4
gpt4 key购买 nike

>>> import sys
>>> sys.getsizeof("")
40

为什么空字符串要用那么多字节?有人知道这 40 个字节中存储了什么吗?

最佳答案

在 Python 中,字符串是对象,因此值是对象本身的大小。所以这个大小总是大于字符串本身的大小。

来自stringobject.h:

typedef struct {
PyObject_VAR_HEAD
long ob_shash;
int ob_sstate;
char ob_sval[1];

/* Invariants:
* ob_sval contains space for 'ob_size+1' elements.
* ob_sval[ob_size] == 0.
* ob_shash is the hash of the string or -1 if not computed yet.
* ob_sstate != 0 iff the string object is in stringobject.c's
* 'interned' dictionary; in this case the two references
* from 'interned' to this object are *not counted* in ob_refcnt.
*/
} PyStringObject;

从这里您可以获得一些关于如何使用这些字节的线索:

  • len(str)+1 字节来存储字符串本身;
  • 8 个字节用于哈希;
  • (...)

关于python - str在Python中是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797459/

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