python字符串模块与str方法的比较
>>> import string
>>> s = 'happy cat'
>>> string.find(s, 'cat')
6
和
>>> s = 'happy cat'
>>> s.find('cat')
6
在上面的两段代码中,我有以下疑问。
- 为什么第二段代码在没有导入字符串模块的情况下也能工作?
- 使用其中一个代码相比另一个代码,有性能上的提升吗?
谢谢,
Vinay
1 个回答
11
在早期的Python版本中,有一些在string
模块里定义的函数,现在已经变成了str
类型的方法。这些函数在Python 2.4中被标记为不推荐使用,虽然为了兼容旧版本,后来的Python 2版本中还保留了它们,但在Python 3.0中这些函数就被彻底移除了。
- 为什么第二段代码在没有导入string模块的情况下还能工作?
因为这是str
类型的方法。
- 使用一个方法比另一个方法在性能上有提升吗?
其实,string.find(x, y)
实际上是调用x.find(y)
,但在这里性能并不是重点(见第一句话)。