Python字符串历史

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38682860/article/details/88778149

Python 的字符串方法历史有些曲折。大约 Python 出现的前十年,只提供一个标准库模块,名为 string,其中包含的函数大约相当于目前的字符串对象方法集。为了满足用户需求,在 Python2 时,这些函数就变成字符串对象的方法了。然而,因为有那么多人写了如此多的代码都依赖最初的 string 模块,所以为了保持向后的兼容性一直保留着它。

如今,你应该只使用字符串方法,而不是最初的 string 模块。事实上,最初的模块调用形式已经在 Python3 中删除了。然而,因为你还是会在较旧的 Python 代码中看见这个模块,因此在这里要简单地看一下。

这种历史问题的结果就是,在 Python2.6 中,从技术上来说,有两种方式可以启用高级的字符串操作:调用对象方法或者调用 string 模块函数,把对象当成自变量传递进去。

例如,设定变量 X 为字符串对象,并调用对象方法:

X.method(arguments)

这样通常等效于通过 string 模块调用相同的运算(如果已导入该模块):

string.method(X, arguments)

这里是一个在实际应用中方法机制的例子:

在 Python2.6 中,要通过 string 模块获取相同的操作,你需要导入该模块并传入对象:

因为模块的实现方法是长久的标准,而且因为字符串是大多数程序的核心组件,你可能会在以后创建 Python 程序中看到两种调用模式。

不过,现在你应该使用方法调用而不是陈旧的模块调用。这样做有很好的理由,除了模块调用已经在 Python3 版本删除以外,还有一个理由,那就是模块调用需要你导入 string 模块(而方法调用不需要导入)。此外,模块让调用在输入时需要多打几个字符(当你以 import 加载模块而不是使用 from 时)。最后,模块运行速度比方法慢(当前的模块把大多数调用对应到了方法,因此会导致占用额外的调用时间)。

最初的 string 模块本身保存了 Python3 中(而没有其等同的字符串方法),因为它包含了其他的工具,包括预定义的字符串常数,以及模块对象系统。不过,除非你真的想把代码从 Python2.6 修改为使用 Python3,否则,就应该放弃基本字符串运算调用。

猜你喜欢

转载自blog.csdn.net/sinat_38682860/article/details/88778149