Глядя на str.removeprefix
и str.removesuffix
он говорит:
Если строка начинается / заканчивается строкой префикса / суффикса .. В противном случае возвращает копию исходной строки
И спецификация в PEP показывает Python эквивалентный код с возвратом копии в else:
, а не возвращение только существующей ref:
def removeprefix(self: str, prefix: str, /) -> str:
if self.startswith(prefix):
return self[len(prefix):]
else:
return self[:]
def removesuffix(self: str, suffix: str, /) -> str:
# suffix='' should not call self[:-0].
if suffix and self.endswith(suffix):
return self[:-len(suffix)]
else:
return self[:]
Мой вопрос, зачем вообще делать копию self[:]
? Поскольку строки неизменяемы, не будет ли эффективнее просто вернуть оригинал?