논리 자료형
1. 논리 자료형이란?
수학과 컴퓨터 과학에서 논리 자료형은 값으로 True(참)
와 False(거짓)
를 가지는 자료형을 말합니다. bool
과 boolean
이라고 불리는데 이는 수학자 조지 불(George Boole)이름에서 따온 것입니다.
파이썬에서는 bool
타입이라고 부릅니다. 논리 자료형은 조건문, 반복문, 논리 연산 등 다양한 상황에서 사용되며, 프로그램의 흐름을 제어하는 데 중요한 역할을 합니다.
2. 기본값
True
: 참을 나타냅니다. 1과 같은 값으로 취급됩니다.False
: 거짓을 나타냅니다. 0과 같은 값으로 취급됩니다.
z 같은 경우 뒤에서 배울 비교 연산을 사용해보았습니다. 10 > 3
은 10이 3보다 큰 것인지 연산한 것이고 그 결과는 True
나 False
로 반환됩니다.
아래와 같이 True
와 False
는 각각 1
과 0
으로 취급됩니다. 다른 숫자를 넣으면 False
가 출력됩니다. ==
는 값이 같은지를 체크하는 비교 연산입니다.
이번에는 사칙연산을 해보도록 하겠습니다.
True는 1로, False는 0으로 취급되는 것을 확인할 수 있습니다.
3. 나아가기
파이썬 초창기에는 논리 자료형이 없었습니다. 그래서 0
과 1
로 참과 거짓을 나타내었는데 이는 C언어에서 가져온 것입니다. 파이선에서는 2.4 버전부터 int의 하위 개념(하위 클래스)로 bool 데이터 타입을 도입하였습니다. 초반에는 단순히 하위클래스에 True
와 False
에 1과 0을 할당한 것이라 True나 False에 값을 할당하는 것도 가능했었습니다. 키워드로 사용하게 된 것은 3.x버전 부터입니다.
PEP285에서 상세 내용을 확인할 수 있으며 실제 파이썬의 구현체인 Cpython코드에서 아래와 같이 확인할 수 있습니다.
PyTypeObject PyBool_Type = {
// ...
&PyLong_Type, /* tp_base */
// ...
};
PyTypeObject PyBool_Type = {
// ...
&PyLong_Type, /* tp_base */
// ...
};
여기서 PyLong_Type
은 int의 구현체입니다. 그리고 혹시 실제 파일을 확인하실 분들을 위해 int와 float는 intobject.c
, floatobject.c
에 구현되어 있지 않고 longobject.c
에 구현되어 있다는 것을 알려드립니다. python 3.9 버전에서 통합되었습니다.
이러한 역사적 배경으로 아래와 같은 코드가 실행됩니다. 다만 메모리 상에서 완전히 동일한 값으로 취급하진 않습니다.
어떻게 이렇게 버전이 올라갈 때마다 새로운 문법이 추가되나요?
아직도 파이썬에서는 수많은 제안들이 올라오고 버전이 올라가면서 변경이 되고 있습니다. 다만 모든 의견이 반영되지는 않습니다. 아래 링크를 보면 '거부된 대안(Rejected Alternatives)'이라는 챕터가 있습니다. 이처럼 어떤 의견은 반영되지 못하고, 어떤 의견은 승인되어 최종 파이썬 버전에 반영됩니다.
PEP 3141 – A Type Hierarchy for Numbers | peps.python.org