gpt4 book ai didi

string - cpython的字符串实习的规则是什么?

转载 作者:行者123 更新时间:2023-12-04 02:26:08 25 4
gpt4 key购买 nike

在 python 3.5 中,是否可以预测我们什么时候会得到一个实习字符串或者我们什么时候会得到一个副本?在阅读了一些关于这个问题的 Stack Overflow 答案后,我发现 this one最有帮助但仍然不全面。比我看的Python docs ,但默认情况下不保证实习

Normally, the names used in Python programs are automatically interned, and the dictionaries used to hold module, class or instance attributes have interned keys.



所以,我的问题是关于内部 intern()条件,即决策(是否实习字符串文字):为什么同一段代码在一个系统上工作而不在另一个系统上工作,以及回答的作者在 mentioned topic 上的规则是什么?说的时候的意思

the rules for when this happens are quite convoluted

最佳答案

你认为有规律吗?

实习的唯一规则是 intern 的返回值被实习。其他一切都取决于决定某段代码应该或不应该实习的人的心血来潮。例如,"left" PyCodeNew 实习:

/* Intern selected string constants */
for (i = PyTuple_GET_SIZE(consts); --i >= 0; ) {
PyObject *v = PyTuple_GetItem(consts, i);
if (!all_name_chars(v))
continue;
PyUnicode_InternInPlace(&PyTuple_GET_ITEM(consts, i));
}

这里的“规则”是 co_consts 中的字符串对象如果 Python 代码对象的 . "left"被拘留,但 "as,df"不会,而且 "1234"即使标识符不能以数字开头,也会被拘留。虽然标识符可以包含非 ASCII 字符,但此检查仍会拒绝此类字符。实际标识符永远不会通过此代码;他们会无条件地实习几行,不管是 ASCII 码还是非 ASCII 码。此代码可能会更改,并且还有很多其他代码可以执行实习或类似实习的事情。

向我们询问字符串实习的“规则”就像向气象学家询问婚礼是否下雨的规则。我们可以告诉你很多关于它是如何工作的,但它对你没有多大用处,你总是会得到惊喜。

关于string - cpython的字符串实习的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35805768/

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