python字符串模块与str方法的比较

5 投票
1 回答
1832 浏览
提问于 2025-04-17 09:35
>>> import string
>>> s = 'happy cat'
>>> string.find(s, 'cat')
6

>>> s = 'happy cat'
>>> s.find('cat')
6

在上面的两段代码中,我有以下疑问。

  1. 为什么第二段代码在没有导入字符串模块的情况下也能工作?
  2. 使用其中一个代码相比另一个代码,有性能上的提升吗?

谢谢,
Vinay

1 个回答

11

在早期的Python版本中,有一些在string模块里定义的函数,现在已经变成了str类型的方法。这些函数在Python 2.4中被标记为不推荐使用,虽然为了兼容旧版本,后来的Python 2版本中还保留了它们,但在Python 3.0中这些函数就被彻底移除了。

  1. 为什么第二段代码在没有导入string模块的情况下还能工作?

因为这是str类型的方法。

  1. 使用一个方法比另一个方法在性能上有提升吗?

其实,string.find(x, y)实际上是调用x.find(y),但在这里性能并不是重点(见第一句话)。

撰写回答