기술블로그
➕ += vs .append() 완전 정복 – 언제 어떤 걸 써야 할까?
Chansman
2025. 4. 29. 23:16
➕ += vs .append() 완전 정복 – 언제 어떤 걸 써야 할까?
파이썬을 쓰다 보면 값을 누적할 일이 많습니다.
그럴 때 흔히 사용하는 것이 += 와 .append() 입니다.
하지만 이 둘은 사용 대상이 다르고 동작 방식도 미묘하게 차이가 있어요!
✅ 요약 비교표
구분 += .append()
목적자료형방식
+= | 문자열, 숫자, 리스트 | 값을 누적하거나 이어붙이기 |
.append() | 리스트 전용 | 리스트에 요소 추가하기 |
사용 자료형 | 문자열, 숫자, 리스트 | 리스트 전용 |
동작 방식 | 값을 이어붙이거나 더함 | 리스트에 요소 하나를 추가함 |
반환값 | 없음 (변수 자체 변경) | 없음 (리스트 변경) |
📌 문자열에 += 사용 (⭕ 가능)
text = ""
text += "Hello"
text += " World"
print(text) # 출력: Hello World
❗ 문자열에는 .append() 없음 → AttributeError 발생
📌 리스트에 .append() 사용 (⭕ 가장 권장)
titles = []
titles.append("기생충")
titles.append("인셉션")
print(titles) # ['기생충', '인셉션']
📌 리스트에 += 사용 (⭕ 가능하지만 주의)
titles = ["기생충"]
titles += ["인셉션"]
print(titles) # ['기생충', '인셉션']
💡 +=는 리스트를 풀어서 요소들을 추가합니다.
titles += "슬램덩크"
# 결과: ['기생충', '인셉션', 'ㅅ', 'ㅡ', 'ㄹ', '...', 'ㅋ'] ← 실수 주의 ❗
📌 문자열을 만들 때 append() ❌, += ⭕
html = ""
for title in ["기생충", "어벤져스"]:
html += f"<p>{title}</p>"
print(html)
# 출력: <p>기생충</p><p>어벤져스</p>
📌 문자열을 리스트로 누적한 후 join() 사용 (⭕ 대안)
movie_titles = [
f'<a href="/movie/{index}/">{movie["title"]}</a><br>'
for index, movie in enumerate(movie_list)
]
response_text = ''.join(movie_titles)
return HttpResponse(response_text)
💡 리스트에 문자열을 누적하고, 마지막에 ''.join()으로 한번에 합치면 더 효율적입니다.
🎯 실전 요약 정리
상황 | 추천 방식 |
문자열 붙이기 | += |
숫자 누적 합산 | += |
리스트에 요소 하나 추가 | .append() |
여러 요소 한꺼번에 추가 | .extend() or += [a, b] |
HTML 문자열 모아서 출력 | list.append() + ''.join() |
✅ 결론
- +=는 간결하고 직관적이지만, 리스트에서는 주의가 필요합니다.
- .append()는 리스트 조작에 최적화되어 있으며, 구조적 데이터를 다룰 때 더 명확합니다.
- 문자열 누적이 많은 경우에는 list.append()로 모았다가 ''.join()으로 출력하는 방식이 성능에도 더 좋습니다.
🎯 실전 요약 정리
상황 추천 방식
문자열 붙이기 | += |
숫자 누적 합산 | += |
리스트에 요소 하나 추가 | .append() |
여러 요소 한꺼번에 추가 | .extend() or += [a, b] |
✅ 결론
- +=는 간결하고 직관적이지만, 리스트에서는 주의가 필요합니다.
- .append()는 리스트 조작에 최적화되어 있으며, 구조적 데이터를 다룰 때 더 명확합니다.
둘 다 잘 활용하면, 코드의 효율성과 가독성이 훨씬 좋아집니다!
필요하면 .extend()나 .insert(), .pop() 등도 함께 정리해보세요 😊