python "string" 模块?
我在看一个大概是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
对象的标准方法,不过你还是需要:
- 在导入库后,用
string.
来前缀它们,或者 - 使用
from string import <whatever>
的语法。
通常情况下,只有在你看到像 from __future__ import with_statement
这样的导入时,它们才会被正确导入但从未“明确使用”。这些是 Python 用来支持新语言特性的向前/向后兼容性触发器。
7
string
模块里有一些很有用的常量,比如ascii_letters
和digits
。很多时候,大家还是会为了这些常量而引入这个模块。