为什么 Python 中不推荐使用 MutableString?

2024-04-15

为什么是可变字符串 http://docs.python.org/library/userdict.html#UserString.MutableStringPython 2.6 中已弃用的类;
为什么它在 Python 3 中被删除了?


The MutableString类的目的是具有教育意义,而不是在实际程序中使用。如果您查看实现,您会发现您无法在需要可变字符串的严肃应用程序中真正使用它。

如果您需要可变字节串,您可以考虑使用bytearrayPython 2.6 和 3.x 中提供了该功能。每次修改旧字符串时,该实现都不会创建新字符串,因此它更快、更可用。它还正确支持缓冲区协议,因此几乎可以在任何地方使用它来代替普通字节串。

如果您真的不打算按索引对单个字符串进行多次修改,那么通过创建新字符串来修改普通字符串应该适合您(例如通过str.replace, str.format and re.sub).

没有可变的 unicode 字符串,因为这被认为是不常见的应用程序,但您始终可以实现__unicode__ (or __str__对于 Python 3) 和encode自定义序列类型上的方法来模拟一种。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Python 中不推荐使用 MutableString? 的相关文章

随机推荐

  • asp.net mvc - ActionLink 的渲染不一致

    我有一个控制器 它接受以下两种格式的 URL 网络 添加或编辑 gt 在页面上呈现空白表单以添加新的网络对象 网络 AddOrEdit id gt 使用预填充表单呈现页面以编辑网络对象 带有 ID id 显然 每个实例中都使用相同的视图 我
  • 在 JavaScript 中逐行动态添加字幕到视频元素

    我想知道目前是否可行 下面是我的 HTML
  • Chrome DevTools 中缺少“添加到主屏幕”链接

    使用 Google 服务可能会令人沮丧 他们有令人难以置信的文档 但文档总是假设一切正常 如果有什么东西不像广告上说的那样有效 那你就完全靠自己了 没有错误消息 没有解决问题的帮助 甚至没有承认某些事情可能不起作用 以防万一 添加到主屏幕
  • 如何检索 C99 可变参数宏的最后一个参数?

    Visual Studio 失败的 static assert 错误消息完全由错误代码和 static assert 的第二个参数组成 没有任何其他消息表明这是静态断言失败 我想做一个宏来解决这个问题 例如 作为第一次尝试 define S
  • Winforms MVP

    我主要有 ASP Net 背景 懂一些 MVC 我也做了一些 Silverlight 和 MVVM 但是我现在即将转向 Winforms 我对它的经验很少 所以我想知道如何处理 MVP 典型的 MVP 示例显示演示者设置视图属性 通过某种
  • 如何从表中选择除最后 100 条之外的所有记录

    我有一个存储客户记录的数据库 我想设置一个 cron 作业来定期覆盖这些记录 我想说 Select from ORDERS where ORDER ID 不在列表的前 100 名中 每行都有自己的 order id 最新的 order id
  • 多个App服务使用同一个域名

    我们有一个场景 我们有多个 azure 应用程序服务 并且部署了 Web API 但是我们需要所有应用程序服务使用相同的域名 而不是子域 例如http example com api1 http example com api1在一个应用程
  • Postgres:在一项选择中获取最小值、最大值、聚合值

    我正在使用 Postgresql 8 4 我有一个这样的表 type value 1 5 2 6 1 4 3 10 我想写一个选择 它将给我最小值和最大值 以及所有类型的聚合integer 期望的结果应该是 min max types 4
  • SQL 连接具有特定条件的两个表

    表A结构 表B结构 上面是两个表 TableB TableARelationID是一个relationID 用于映射表A 期望的输出 期望的结果将采用 TableA RecordID 和 TableB Text 但仅采用表 B 中的类型 2
  • 在Python中不使用全局变量跟踪递归调用的数量

    如何在 Python 中不使用全局变量来跟踪递归调用的次数 例如 如何修改以下函数来跟踪调用次数 def f n if n 1 return 1 else return n f n 1 print f 5 这是一个不使用全局的巧妙技巧 您可
  • 使用 PHP Curl 发布数据并检索响应?

    我对使用网络服务非常陌生 所以我发现这很令人困惑 如果我有一个 URL 我想向其发布一些 JSON 数据 我知道如何使用 CURL PHP 方法来执行此操作 我想知道的是 如果我这样做 并且 URL 有某种服务器响应 我如何在我的 php
  • 如何选择30天的数据?

    我有疑问 SELECT name FROM SELECT name FROM Hist answer WHERE id city 34324 AND datetime gt DATE SUB CURRENT DATE INTERVAL 1
  • 如何列出导入的模块?

    如何枚举所有导入的模块 例如 我想得到 os sys 从这段代码 import os import sys import sys sys modules keys 仅获取当前模块的所有导入的近似方法是检查globals https docs
  • 来自 MDTool 的 .IPA 文件

    如何让 MDTool 为我的 MonoTouch 项目创建 IPA 文件 当我从 MonoDevelop GUI 应用程序中构建时 会创建 IPA 文件 But mdtool build configuration AppStore iPh
  • 静态文件application_可读用法

    我一直在尝试了解 application read 静态 url 处理程序字段的工作原理 我使用的是 SDK 版本 1 7 7 并且我已在开发环境中的应用程序上将其设置为 true 但我似乎无法实际读取该文件 app yaml url te
  • Scala 相当于 F# 中的 |> 或 Clojure 中的 ->>

    在 Scala 中 当我有这个表达式时 f1 f2 f3 p 有没有一种方法可以让我使用类似的东西 F p gt f3 gt f2 gt f1 还是 Clojure gt gt p f3 f2 f1 Scala 中没有相当于 F 的管道运算
  • 如何在一个 Tomcat + Apache 上部署多个 Grails 应用程序?

    我已经阅读了 StackOverflow 上的几个问题 并用 google 搜索了几个小时 但对于在一个 tomcat 5 5 使用 Apache 上部署多个 Grails 应用程序的问题 我找不到完整且清晰的答案 也许有人可以把我推向正确
  • C# 中的拳击发生

    我正在尝试收集 C 中发生装箱的所有情况 将值类型转换为System Object type struct S object box new S 将值类型转换为System ValueType type struct S System Va
  • 宽度为 100% 的 HTML 输入文本框溢出表格单元格

    有谁知道为什么宽度为 100 的输入元素会超出表格的单元格边框 在下面的简单示例中 输入框越过表格的单元格边框 结果非常糟糕 这已经过测试 并且在 Firefox IE7 和 Safari 上以相同的方式发生 这对你来说有意义吗 我错过了什
  • 为什么 Python 中不推荐使用 MutableString?

    为什么是可变字符串 http docs python org library userdict html UserString MutableStringPython 2 6 中已弃用的类 为什么它在 Python 3 中被删除了 The