Python/기초

파이썬 문자열 기본 개념과 메모리 구조

sdesign416 2026. 5. 21. 20:13

우리가 화면에서 보는 문자들은 단순한 글자가 아닌,
컴퓨터 내부에서는 모두 숫자로 변환되어 저장된다.
 
즉, 컴퓨터는 문자를 보이는대로 저장하는 것이 아닌
문자에 대응되는 숫자 코드를 저장하고 처리하는 과정을 거친다.


컴퓨터는 문자를 어떻게 저장할까?

컴퓨터는 모든 데이터를 0과 1의 형태로 저장한다.
 
문자 역시 예외는 아니며,
각 문자마다 고유한 숫자 값을 부여한 뒤 이를 이진수로 변환하여 저장한다.
 
이러한 규칙을 문자 인코딩(Character Encoding) 이라고 한다.
 
예를 들어 아래와 같이 문자는 내부적으로 숫자로 변환된다.
그리고 이 숫자는 다시 2진수 형태로 메모리에 저장된다.

A → 65
a → 97

 
컴퓨터는 문자를 직접 이해하는 것이 아니라
숫자로 변환된 데이터를 처리한 뒤
출력 시 다시 문자 형태로 보여주는 방식으로 동작한다.


ASCII와 Unicode

1) ASCII

ASCII(American Standard Code for Information Interchange)는
초기 컴퓨터에서 사용되던 대표적인 문자 인코딩 방식이다.
 
7비트를 사용하여 총 128개의 문자만 표현할 수 있으며,
영문 대소문자, 숫자, 일부 특수문자를 포함한다.
 
하지만 ASCII는 한글, 일본어 등
다양한 언어를 표현할 수 없다는 한계가 있었다.

2) Unicode

이러한 문제를 해결하기 위해 등장한 것이 Unicode이다.
 
Unicode는 전 세계 대부분의 문자와 기호를
하나의 통합된 체계로 표현하기 위한 표준 문자 체계이다.
 
Python 문자열 역시 내부적으로 Unicode 기반으로 관리된다.
Python의 문자열은 영어뿐 아니라 한글, 일본어, 이모지까지 처리할 수 있다.

text = "안녕하세요 😊"
print(text)

 

3) UTF-8

Unicode는 문자 체계이고,
UTF-8은 Unicode 문자를 실제로 저장하는 인코딩 방식이다.
 
UTF-8은 현재 가장 널리 사용되는 방식이며 다음과 같은 특징을 가진다.

  • 영어 : 1Byte
  • 한글 : 여러 Byte
  • 저장 효율이 높음
  • 웹 환경과 호환성이 좋음

UTF-8은 영어와 다양한 언어를 함께 안정적으로 표현할 수 있기 때문에
현재 웹 표준 인코딩처럼 사용되고 있다.


문자열(String) 이란?

문자열(String)은 문자들의 순서 있는 집합으로,
텍스트 데이터를 표현하기 위해 사용되는 자료형을 말한다.
 
문자열은 문자들이 순서대로 저장되기 때문에
각 문자에 위치 번호(인덱스)를 사용할 수 있다.
 
Python에서는 작은따옴표(' ') 또는 큰따옴표(" ")를 사용하여 문자열을 표현할 수 있다.

 
또한 아래처럼 여러 줄 문자열은 작은따옴표 또는 큰따옴표 3개로 열고 닫아 사용할 수 있다.
이와 같이 사용 할 경우 줄바꿈이 그대로 유지되어 출력된다.


문자열과 메모리

1) 리터럴 공유(Literal Sharing)

Python의 문자열은 immutable(불변 객체)이기 때문에
동일한 문자열은 메모리를 효율적으로 사용하기 위해 공유될 수 있다.

a = "Hello"
b = "Hello"

print(a is b)	#True 출력

위 코드는 두 변수가 동일한 문자열 객체를 참조하고 있다는 의미이다.
 
이를 리터럴 공유(Literal Sharing) 또는 인터닝(Interning)이라고 한다.
다만 모든 문자열이 항상 공유되는 것은 아니며,
Python 내부 최적화 방식에 따라 달라질 수 있다.

2) 문자열은 Immutable 객체

문자열의 가장 중요한 특징 중 하나는
생성된 이후 값을 변경할 수 없다는 점이다.

문자열은 내부 값을 직접 수정할 수 없는 immutable 객체이다.
 
따라서 문자열을 변경하는 것처럼 보이는 동작도
실제로는 새로운 문자열 객체를 생성하는 방식으로 동작한다.

text = "Hello"
print(id(text))		#주소1

text = text + ", Python!"
print(id(text))		#주소2

위 코드에서는 문자열이 수정된 것이 아니라
새로운 문자열 객체가 생성되며 메모리 주소도 변경된다.


정리

  • 문자열은 문자들의 순서 있는 집합이며, 텍스트 데이터를 표현하기 위해 사용된다.
  • 컴퓨터는 문자를 그대로 저장하지 않고 숫자로 변환하여 저장한다.
  • Python 문자열은 내부적으로 Unicode 기반으로 관리된다.
  • UTF-8은 Unicode 문자를 실제로 저장하기 위한 대표적인 인코딩 방식이다.
  • 문자열은 immutable(불변 객체) 특성을 가지며 생성 이후 내부 값을 변경할 수 없다.
  • 문자열 연산은 기존 문자열을 수정하는 것이 아니라 새로운 문자열 객체를 생성한다.