您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python如何确定两个字符串是否相同

Python如何确定两个字符串是否相同

您发布的链接

那么为什么不'a' * 21 is 'aaaaaaaaaaaaaaaaaaaaa'评价True呢?您还记得所有软件包中遇到的.pyc文件吗?好吧,Python字节码存储在这文件中。如果有人写了这样的话会怎样['foo!'] * 10**9生成.pyc 文件将很大!为了避免这种现象,如果通过窥孔优化生成的序列长度大于20,则将其丢弃。

如果您有字符串"HelloHelloHelloHelloHello",Python将必须按原样存储它(要求解释器检测字符串中的重复模式以节省空间可能太多了)。但是,当涉及到可以在解析时计算的字符串值时,例如"Hello" * 5,Python将这些值作为所谓的“窥孔优化”的一部分进行评估,后者可以决定是否值得对字符串进行预计算。由于len("Hello" * 5) > 20,解释程序将其保留原样,以避免存储太多长字符串。

编辑:

如该问题所示,您可以在peephole.c函数的源代码中对此进行检查fold_binops_on_constants,最后将看到:

// ...
} else if (size > 20) {
    Py_DECREF(newconst);
    return -1;
}

编辑2:

实际上 ,该优化代码最近已移至适用于Python 3.7的AST优化器中,因此,您现在必须调查一下ast_opt.cfunction函数fold_binop,该函数现在调用Now函数safe_multiply,该函数检查字符串是否不超过MAX_STR_SIZE新定义为4096。因此,似乎对于下一个版本的限制已大大提高。

python 2022/1/1 18:44:15 有302人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶