栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

字符串是否在Python中合并?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串是否在Python中合并?

字符串在Python中是不可变的,因此实现可以决定是否进行内部(这通常与C#相关联,这意味着某些字符串存储在池中)这个字符串。

在您的示例中,您正在动态创建字符串。CPython并不 总是 查看池以检测字符串是否已经存在-
这也没有意义,因为您首先必须保留内存以创建字符串,然后将其与池内容进行比较(长期效率低下)字符串)。

但是对于长度为1的字符串,CPython确实会查询池(参见“ stringobject.c”):

static PyStringObject *characters[UCHAR_MAX + 1];...PyObject *PyString_FromStringAndSize(const char *str, Py_ssize_t size){...    if (size == 1 && str != NULL &&    (op = characters[*str & UCHAR_MAX]) != NULL)    {        #ifdef COUNT_ALLOCS one_strings++;        #endif        Py_INCREF(op);        return (PyObject *)op;    }...

所以:

a = str(num)b = str(num)print a is b # <-- this will print False in most cases (but try str(1) is str(1))

但是,当直接在代码中使用 常量 字符串时,CPython使用相同的字符串实例:

a = "text"b = "text"print a is b # <-- this will print True


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号