IT story

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

hot-time 2020. 6. 29. 07:43
반응형

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


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

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

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

참고 URL : https://stackoverflow.com/questions/9189172/why-doesnt-calling-a-python-string-method-do-anything-unless-you-assign-its-out

반응형