当前位置: 首页 > 面试题库 >

为什么Python字符串是不可变的?使用它们的最佳实践

公孙向荣
2023-03-14
问题内容
  1. 使Python字符串不可变的设计原因是什么?它如何使编程更容易?
  2. 我习惯于可变字符串,例如C语言中的可变字符串。我应该如何在没有可变字符串的情况下进行编程?有没有最佳做法?

问题答案:

收到字符串时,请确保它保持不变。假设您将Foo使用字符串参数构造一个如下所示的字符串,然后修改该字符串;那么Foo的名称就会突然更改:

class Foo(object):
    def __init__(self, name):
        self.name = name

name = "Hello"
foo = Foo(name)
name[0] = "J"

使用可变的字符串,您必须一直制作副本,以防止发生不良情况。

它还使单个字符与长度为1的字符串没有区别的便利性,因此所有字符串html" target="_blank">运算符也适用于字符。

最后,如果字符串不是一成不变的,则您不能可靠地将它们用作a中的键dict,因为它们的哈希值可能会突然改变。

对于使用不可变字符串进行编程,只需习惯像对待数字一样对待它们:将其视为 ,而不是作为对象。改变的第一个字母name

name = "J" + name[1:]


 类似资料:
  • 问题内容: 我正在使用以下内容从文本文件中读取一行: 并使用telnetlib.write命令将其输出到16个字符的LCD显示屏。如果读取的行长于16个字符,我想将其分解为16个字符长的字符串,并在一定的延迟(例如10秒)后将每个部分推出,一旦完成,代码应移至下一行输入文件,然后继续。 我曾尝试搜索各种解决方案并阅读itertools等。但是,我对Python的理解不足以使所有事情变得复杂,而如果

  • 问题内容: 我们通常使用关键字创建对象,例如: 字符串是对象,但是我们不能用来创建它们: 为什么是这样?我可以用做一个琴弦吗? 问题答案: 除了已经说过的内容外,Java中的字符串文字(即像Java 一样但不喜欢的字符串)是经过内插的-这意味着,每次引用时,你都将引用一个String实例,而不是一个新实例。每一次。因此,你将拥有: 但是如果你有 那么就有可能 (如果有人需要提醒,请务必使用比较字符

  • Python中的字符串是不可变的,这意味着该值不能更改。我正在测试该场景,但看起来原始字符串已被修改。我只是想理解这个概念

  • 本文向大家介绍为什么字符串对象在Java中是不可变的?,包括了为什么字符串对象在Java中是不可变的?的使用技巧和注意事项,需要的朋友参考一下 通常,字符串用于表示重要细节,例如数据库连接URL,用户名密码等。字符串的不变性有助于使这些细节保持不变。 类似地,在加载类时,将String用作参数。那时,更改字符串可能会导致加载错误的类。 如果不可变,则变量(字符串)自动为线程安全的。

  • Python中的字符串是不可变的,这意味着该值不能更改。但是,在以下示例中,当附加到字符串时,由于id保持不变,看起来原始字符串内存被修改了: 相反,在以下示例中,id更改: