언어/Python
왜 Python에서 `str`타입이 append 메소드를 지원하지 않을까?
몰입하는로건
2024. 5. 28. 09:35
[결론]
Python에서 str 타입이 append 메소드를 지원하지 않는 이유는 문자열이 불변 객체 (immutable object) 이기 때문입니다. 불변 객체란 한 번 생성되면 그 값을 변경할 수 없는 객체를 의미합니다. 문자열은 생성된 후 그 내부의 문자들을 직접 수정할 수 없으며, 새로운 문자열을 만들어 반환하는 방식으로만 변경할 수 있습니다.
[예시: 불변 객체로서의 문자열]
s = "hello"
s.append(" world")
# AttributeError: 'str' object has no attribute 'append'
위 예제에서 s는 문자열 객체입니다. 하지만 str 객체에는 append 메소드가 없기 때문에 AttributeError가 발생합니다.
[그럼 문자열을 수정하려면 어떻게 해야 될까?]
문자열을 수정하려면 문자열을 조작하여 새로운 문자열을 생성해야 합니다
예시 1: 덧셈 연산자를 사용하여 문자열 이어붙이기
s = "hello"
s = s + " world"
print(s) # 출력: hello world
위 예제에서는 s + " world"가 새로운 문자열을 생성하고, 그 결과를 다시 s에 할당합니다.
예시 2: join 메소드를 사용하여 문자열 이어붙이기
s = "hello"
s = "".join([s, " world"])
print(s) # 출력: hello world
join 메소드는 리스트에 있는 문자열들을 하나로 합쳐 새로운 문자열을 만듭니다.
예시 3: format 메소드 또는 f-string을 사용하여 문자열 포맷팅
s = "hello"
s = "{} world".format(s)
print(s) # 출력: hello world
s = "hello"
s = f"{s} world"
print(s) # 출력: hello world