python "string" 模块?

11 投票
4 回答
50866 浏览
提问于 2025-04-17 01:57

我在看一个大概是2002年的旧模块,里面有一句“import string”。那时候的Python是不是需要你明确导入一个字符串模块,才能使用字符串类型的变量呢?我在代码里没有看到这样用:

string.something

4 个回答

1

就像Ambar说的,这里似乎有一个多余的导入。而RoeeeK也说得对,实际上大部分string模块的功能现在都可以用字符串的方法来实现,也就是说,你可以用"foobar".method()来代替string.function("foobar")。不过,有时候明确导入这个模块还是有用的,比如在回调函数的情况下:

map(string.strip, [' foo ', ' bar '])

需要注意的是,上面的操作也可以通过[chunk.strip() for chunk in [' foo ', ' bar ']]来实现,所以在这种情况下其实并不需要导入string模块。

6

如果你看到一行 import string,但从来没有看到 string.something,那可能是因为有人忘了删掉一个没用的导入。

以前在 string 里确实有一些东西,现在已经变成了 str 对象的标准方法,不过你还是需要:

  1. 在导入库后,用 string. 来前缀它们,或者
  2. 使用 from string import <whatever> 的语法。

通常情况下,只有在你看到像 from __future__ import with_statement 这样的导入时,它们才会被正确导入但从未“明确使用”。这些是 Python 用来支持新语言特性的向前/向后兼容性触发器。

7

string模块里有一些很有用的常量,比如ascii_lettersdigits。很多时候,大家还是会为了这些常量而引入这个模块。

撰写回答