파이문

파이썬에서 문자열 합치기 본문

Python/Python

파이썬에서 문자열 합치기

민Z 2016. 4. 10. 21:08

파이썬에서 문자열 합치기 파이썬에서 기존에 문자열을 다음과 같이 더하여서 종종 사용하였다.

    new_str = str + word

그러나 이 방법은 파이썬에서 지양하는 문자열 append 방법이었다. 파이썬에서 문자열은 불변 객체로, 새로운 값을 더하여 문자열을 생성할 경우 기존의 것에서 더해지는 것이 아닌, 새로운 객체가 생성되는 것이었다. (자바의 String과 같다. 얕은 지식으로는 자바의 경우 String대신에 StringBuilder를 사용하라고 했던 것 같다. 자바1.6 이상? 부터는 컴파일러가 좋아져서 그냥 문자열을 더할 때는 + 를 쓴다고 한다. 내부적으로는 빌더를 쓰기 때문에 가독성을 위해서 String을 그냥 사용해도 좋다고. 단, 빌더와 버퍼의 구분은 해야 한다!) 그래서 파이썬에서 굳이 문자열을 더하겠다고 하면 다음과 같이 방법을 써야 한다.

    new_str = []
    new_str.append(str)
    new_str.append(word)
    new_str = ''.join(new_str)
소스 코드상에서 면 첫 번째 소스가 훨씬 짧지만 시간을 재면, 두 번째 소스 코드가 훨씬 짧은 실행 속도를 가질 수 있다. 왜냐하면 첫 번째 방법은 gc가 여러번 생성 되기 때문이다. 그러니 문자열 합치기, string concat 을 할 때는 두 번째 방법을 써야한다. 실제로 두 번째 방법이 pythonic way 이기도 하다. 성능상의 문제를 고려해봐도 그렇다. 


Comments