【问题标题】:Why string method on a string object doesn't modify the object in Python?为什么字符串对象上的字符串方法不会修改 Python 中的对象?
【发布时间】:2012-03-05 10:03:04
【问题描述】:

我觉得奇怪的是,对字符串对象的字符串方法操作不会修改字符串对象。为什么?昨天我浪费了很多时间试图理解为什么我的代码在我最终发现这一点时不起作用。

【问题讨论】:

标签: python


【解决方案1】:

字符串是python中的不可变类型。不可变的主要优点是:

  • 简化多线程编程。
  • 可用作字典键(将保持相同的哈希)

【讨论】:

    【解决方案2】:

    在 Python 中,字符串在设计上是不可变的。这对于许多其他语言也很常见,因此它不是 Python 特定的东西。对于“为什么?”请在 SO 上查看 these excellent answers,以及 Eric Lippert 的 this great blog post

    这就是为什么字符串操作总是返回一个新字符串(然后您可以重新分配给与以前相同的名称,例如

    mystr = mystr.upper()
    

    【讨论】:

    • 你可以使用mystr.strip().lower()
    • @warwaruk:是的,但如果方法会就地修改字符串(并返回它),您也可以这样做。当然,那会违反另一个 Python 原则……
    • @warwaruk:这就是我所说的“违反另一个原则”的意思。
    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多