Есть ли различия между string.replace / .strip / .find и встроенными функциями? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть Python 2 кодовая база, которую я перевожу на Python 3. Старая кодовая база использует

import string

foo = string.replace(s, old, new)
foo = string.strip(s)
foo = string.find(s, sub, start, end)

Я переместил ее с 2to3, но это выдает ошибку. Я предполагаю, что я должен заменить вышеуказанное на

foo = s.replace(old, new)
foo = s.strip()
foo = s.find(sub, start, end)

Я посмотрел документацию:

Они выглядят точно так же. Почему эти функции в модуле string были в первую очередь? Было ли это изменение до Python 2,7? Может быть, разница в производительности или какие-то особые случаи, которые рассматриваются по-разному?

1 Ответ

2 голосов
/ 26 февраля 2020

Судя по CPython 2.7 string источника модуля , они являются тривиальными обертками для вызовов методов. Это, вероятно, отличалось в гораздо более старшем Python. Исходные комментарии того же кода:

Начиная с Python 1.6, многие из этих функций реализованы как методы для стандартного строкового объекта.

...