Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 문자열 리터럴 앞의 'b' 접두사, 정확히 무슨 뜻일까?

파이썬 문자열 앞의 'b' 접두사란?

파이썬 코드를 보다 보면 b'hello'처럼 문자열 리터럴 앞에 소문자 b 또는 대문자 B가 붙어 있는 경우를 종종 발견하게 됩니다. 이 접두사는 단순한 표기법이 아니라, 해당 리터럴이 어떤 데이터 타입으로 해석될지를 결정하는 중요한 역할을 합니다.

파이썬 2에서의 동작

파이썬 2에서는 b 또는 B 접두사가 아무런 영향을 주지 않고 그대로 무시됩니다. 파이썬 2의 기본 문자열 타입 자체가 바이트(bytes) 기반이었기 때문에, 접두사를 붙여도 결과가 달라지지 않습니다.

파이썬 3에서의 동작

반면 파이썬 3에서는 상황이 완전히 다릅니다. 바이트 리터럴은 항상 b 또는 B로 시작해야 하며, 이렇게 선언된 리터럴은 str 타입이 아닌 bytes 타입의 인스턴스를 생성합니다.

또한 바이트 리터럴에는 ASCII 문자만 직접 포함할 수 있습니다. 숫자 값이 128 이상인 바이트는 반드시 이스케이프 시퀀스(예: \x80)를 사용해 표현해야 합니다.

파이썬 3.x에서 str과 bytes의 명확한 구분

파이썬 3.x는 텍스트와 바이트 데이터를 서로 다른 타입으로 명확하게 분리합니다.

  • str: '...' 형태의 리터럴로 생성되며, 유니코드 문자들의 시퀀스입니다. (내부 인코딩은 파이썬이 컴파일된 방식에 따라 UTF-16 또는 UTF-32입니다.)
  • bytes: b'...' 형태의 리터럴로 생성되며, 옥텟(octet)들의 시퀀스입니다. 각 요소는 0부터 255 사이의 정수 값입니다.

간단한 예제

s = '안녕하세요' → 유니코드 텍스트를 담는 str 객체입니다.
b = b'hello' → 원시 바이트 데이터를 담는 bytes 객체입니다.

즉, 사람이 읽는 텍스트는 str로, 파일 입출력·네트워크 통신 등에서 다루는 원시 데이터는 bytes로 처리하는 것이 파이썬 3의 기본 설계 철학입니다. 두 타입 간 변환은 encode()decode() 메서드를 통해 수행할 수 있습니다.