当前位置: 首页 > 编程笔记 >

如何在Python中更改不可变字符串的ID?

诸葛煜
2023-03-14
本文向大家介绍如何在Python中更改不可变字符串的ID?,包括了如何在Python中更改不可变字符串的ID?的使用技巧和注意事项,需要的朋友参考一下

Python中的字符串是不可变的,这意味着一旦创建了字符串,就无法更改它。创建字符串时,如果创建相同的字符串并将其分配给另一个变量,则它们都将指向相同的字符串/内存。例如,

>>> a = 'hi'
>>> b = 'hi'
>>> id(a)
43706848L
>>> id(b)
43706848L

字符串对象的这种重用在Python中称为Interning。相同的字符串具有相同的ID。但是,不能保证Python可以实作字符串。如果您创建的字符串不是代码对象常量,或者包含字母+数字+下划线范围之外的字符,则将看到该id()值未被重用。

我们如下更改给定字符串的id。我们将其分配给两个不同的标识符。找到时这些变量的id是不同的。这是因为给定的字符串包含字母,数字和下划线以外的字符。

>>> a = 'weworks_45#@$'
>>> b = 'weworks_45#@$'
>>> id(a)
96226208L
>>> id(b)
91720800L
 类似资料:
  • 问题内容: 关于id类型对象str(在python 2.7中)的某些事情使我感到困惑。该str类型是不可变的,因此我希望一旦创建它,​​它将始终具有相同的id。我相信我说的话不太好,所以我将发布一个输入和输出序列的示例。 因此与此同时,它一直在变化。但是,在有一个指向该字符串的变量之后,情况发生了变化: 因此,一旦变量保存了该值,它似乎就冻结了。确实,在和之后o, 的输出再次更改。 这是不相同的行

  • 我认为每次更改字符串后,Python字符串的id都必须更改。但我发现真正的行为是不同的。例如,并非输出下面的所有代码字符串都不同: 这就是为什么我认为Python内核正在尝试优化代码,并开始对内存中的字符串进行奇怪的操作。该假设的另一个论点是,常量ID与大小为2的幂的段相关联: 但这其中还有一件奇怪的事。让我们看看随着字符串大小的增加,段大小会发生什么变化: 最后,我们可以尝试近似地将char添加

  • 问题内容: Python中替换字符串中字符的最简单方法是什么? 例如: 问题答案: 不要修改字符串。 与他们一起工作作为清单;仅在需要时才将它们转换为字符串。 Python字符串是不可变的(即无法修改)。有很多的原因。使用列表,直到你别无选择,然后将它们变成字符串。

  • 本文向大家介绍Java中的不可变字符串,包括了Java中的不可变字符串的使用技巧和注意事项,需要的朋友参考一下 在Java中,不可变对象是指那些不能更改或修改(一旦修改)数据的对象。字符串类是不可变的,即一旦我们创建了一个字符串对象,就无法修改其数据。

  • python中的字符串是不可变的对象。更改字符串应该会创建一个新对象,从而创建一个新id。 出于某种原因,当我尝试执行一个简单的字符串连接时,有时id会改变,有时则不会。我注意到当我所做的更改很小时,它往往不会改变id,但这似乎不是一个足够好的解释。只是想知道为什么会发生这种情况。 这是我闲置shell的截图。如果有人能解释一下,我会非常感激:) id有时更改,有时不更改的示例

  • 本文向大家介绍如何在Python中修剪掉字符串中不可打印的字符?,包括了如何在Python中修剪掉字符串中不可打印的字符?的使用技巧和注意事项,需要的朋友参考一下 如果只有ASCII字符,并且要删除不可打印的字符,最简单的方法是使用string.printable过滤掉那些字符。例如, 未打印0x01,因为它不是可打印字符。如果还需要支持Unicode,则需要使用Unicode数据模块和正则表达式