[python] 출력을 할당하지 않으면 왜 파이썬 문자열 메소드를 호출해도 아무것도하지 않습니까?

간단한 문자열 교체를 시도하지만 왜 작동하지 않는지 모르겠습니다.

X = "hello world"
X.replace("hello", "goodbye")

단어 hello를 로 변경하고 싶으 goodbye므로 문자열 "hello world"을로 변경해야 합니다 "goodbye world". 그러나 X는 남아 있습니다 "hello world". 왜 내 코드가 작동하지 않습니까?



답변

파이썬 에서는 문자열을 변경할 수 없기 때문 입니다.

이는 교체 된 사본X.replace("hello","goodbye")반환 한다는 의미입니다 . 이 때문에 다음 줄을 바꿔야합니다.X

X.replace("hello", "goodbye")

이 줄로 :

X = X.replace("hello", "goodbye")

더 넓게, 이 “자리에서”문자열의 내용을 변경하는 모든 파이썬 문자열 메쏘드 마찬가지입니다 , 예를 들어 replace, strip, translate, lower/ upper, join

출력을 사용하고 버리지 않으 려면 출력을 무언가에 할당해야합니다 . 예 :

X  = X.strip(' \t')
X2 = X.translate(...)
Y  = X.lower()
Z  = X.upper()
A  = X.join(':')
B  = X.capitalize()
C  = X.casefold()

등등.


답변

모든 문자열 함수로 lower, upper, strip원본을 수정하지 않고 문자열을 반환한다. 생각하는 것처럼 문자열을 수정하려고 well it is an iterable하면 실패합니다.

x = 'hello'
x[0] = 'i' #'str' object does not support item assignment

불변의 문자열의 중요성에 대한 좋은 글이 있습니다 : 왜 파이썬 문자열은 불변입니까? 그것들을 사용하는 모범 사례


답변