반응형

개요

 파이썬의 Bool 타입(자료형)을 이해하기 위해서는 bool 타입의 탄생 배경을 아는 것이 중요하다. bool 타입은 현재 사용되고 있는 프로그래밍 언어 대부분이 갖고 있다. 정의는 True 와 False 두 가지 값밖만 가질 수 있다.

 bool 타입이 생기기 이전에는 int 라는 정수형 자료로 0일 경우 False 이외의 값을 갖는 경우 True와 같은 결과로 간주를 했었다. 하지만, 오랫동안 프로그래머들이 사용해본 결과 가독성이 나쁘다고 판단이 되어서 만들어지게 되었다. 예를 들어 C 에서는 함수가 제대로 동작하지 않았을 때, 음수 혹은 -1을 반환하는 등 오류 코드들은 음수를 일반적으로 사용했다. 그러나 조건문의 정의상 0 이외에는 True가 되기 때문에 분명 오류로 자주 사용하는 -1 은 True로 판단이 되는 등 논리적으로 혼란을 주기 때문에 조건문과 같은 대응 용으로 bool 을 사용하도록 한 것이다.

이 때문에 논리 연산과 비교 연산을 하게 될 경우 항상 그결과는 bool 타입으로 반환하게 된다. 이 때문에 bool 타입과 논리 연산자, 비교 연산자를 함께 공부하는 것이 좋다고 생각한다.

여담으로 필자 기억으로는 초기 C++에서 bool 타입이 추가 되었을때 이에 대해서 불만을 제기하는 몇몇 개발자의 푸념의 글도 본적이 있었다. 아직 성능이 중요한 시절이었기 때문에 자신은 익숙한데 굳이 bool 타입을 사용해야 하다보니 번거롭다는 내용이었다.

논리 연산자

논리 연산은 수학에서 정의된 논리 연산들이 있다. 오늘날 컴퓨터가 있게 되는 기본이 되는 연산이 된다. 오늘날 반도체로 컴퓨터를 만들 수 있게 된 이유가 바로 논리 연산이 가능하기 때문이다.

일반적으로 논리연산은 사칙연산보다 늦게 연산이 된다. 하지만 가독성을 위해서 복잡한 논리 연산을 하게 될 경우 괄호를 사용하여 명시하는 것을 권장한다.

and

연산 기호가 키워드 and로 좌우에 있는 값이 True 가 되어야 True를 반환한다.

True and True
# True

True and False
# False

False and True
# False

False and False
# False

or

연산기호가 키워드 or 로 좌우에 있는 값 중 하나라도 True 가 있으면 True를 반환한다.

True or True
# True

True or False
# True

False or True
# True

False or False
# False

not

연산기호가 키워드 not 으로 키워드 뒤에 있는 값을 반전을 한다. True 인 경우 False, False 인 경우 True를 반환한다.

not True
# False

not False
# True

비교 연산자

일반적으로 비교 연산자의 좌우에는 수치 연산이 가능한 숫자 형태의 값 혹은 숫자 값인 변수가 있어야 한다.

>

직관적으로 연산자의 왼쪽이 오른쪽 보다 클 경우 True를 반환한다.

2 > 1
# True

1 > 1
# False

1 > 2
# False

>=

연산자의 왼쪽이 오른쪽 값 보다 크거나 같은 경우 True를 반환한다. 그 외는 False 를 반환한다.

2 >= 1
# True

1 >= 1
# True

1 >= 2
# False

<

연산자의 왼쪽 값이 오른쪽 값보다 작을 경우 True를 반환한다. 그 외는 False 를 반환한다.

2 < 1
# True

1 < 1
# False

1 < 2
# True

<=

연산의 왼쪽 값이 오른쪽 값 보다 작거나 같을 경우 True를 반환한다. 그 외는 False 를 반환한다.

2 <= 1
# False

1 <= 1
# True

1 <= 2
# True

==

연산자의 왼쪽 값과 오른쪽 값이 같아야 할 경우 True를 반환한다. 해당 연산자는 독특하게 python 고유 기능으로 문자열(str)에도 사용이 가능하다.

2 == 1
# False

1 == 1
# True

1 == 2
# False

"abc" == "ab"
# False

"abc" == "abc"
# True

!=

연산자의 왼쪽 값과 오른쪽 값이 다를 경우에만 True를 반환한다. 같은 경우 False를 반환한다.

is

== 연산자와 비슷하지만 다르다. is는 좌우에 오는 것이 동일한지(메모리에 할당된 주소가 같은지) 확인을 한다. 때문에 연산은 이론적으로 == 연산보다 약간 빠르다. 값의 다향성이 적어 사실상 상수에 해당되는 True, False, None과 비교 할 때 많이 사용한다. 즉 이말은 == 연산에서 True 이나 is 연산에서는 False 경우가 존재하다는 의미이다.

is 연산자는 어느 정도 파이썬으로 개발 경험이 있는 초보 개발자도 잘 모르고 지나가는 경우가 많다.

a = "hello"
# b는 a와 같은 값이 연결되어 있음
b = a
a is b
# True

# 메모리 주소 확인 해볼 것
id(a)
id(b)

b = a[:4] + "o"
# b는 a와 같은 값이지만 서로 다른 곳에 할당되어 있음
a is b
# False

# 메모리 주소 확인해 볼 것
id(a)
id(b)

 

반응형

'Python > 배경이 있는 파이썬' 카테고리의 다른 글

반복문(while, for)  (0) 2024.05.11
코드 블록, 조건문(if)  (1) 2024.05.01
딕셔너리(dict)  (0) 2024.04.29
튜플(Tuple)  (1) 2024.04.27
리스트(list)  (0) 2024.04.27

+ Recent posts