Python/파이썬 기초

파이썬 True로 인정되는 경우 정리, 논리, 비트 및 삼항 연산자

jimmy_AI 2021. 12. 9. 14:26
반응형

파이썬 연산자 정리, 참으로 인정되는 케이스 요약

이번 포스팅에서는 파이썬에서 True / False로 인정되는 케이스 정리와

연산자의 심화된 케이스인 논리 연산자, 비트 연산자 그리고 삼항 연산자의

사용 방법과 예시에 대해서 다루어보도록 하겠습니다.

 

파이썬 True / False 인식 경우의 수

먼저 파이썬에서 참 / 거짓으로 인식하는 케이스는 

boolean 자료형이 아닌 경우에도 많이 있는데요,

아래 표와 같이 정리를 할 수 있습니다.

이를테면, 숫자형은 0이 아닌 모든 수는 참, 0은 거짓으로 인정되고,

문자열, 리스트 등 자료형은 원소가 1개라도 있으면 참, 비었으면 거짓으로

인정됩니다. 

 

물론 파이썬에서 지원하는 boolean 자료형 True / False가 가장 기본적으로 사용되지만,

if, while 문 등에서 다른 자료형들도 참 / 거짓으로 조건 인식이 가능합니다.

 

아래 코드로 여러 자료형의 조건 인식 예시를 살펴보겠습니다.

# 참, 거짓으로 판단하는 경우

if 1: # True
    print('True')

if 0: # False
    print('True')
else:
    print('False')

if 'False': # True
    print('True')

if [1, 5]: # True
    print('True')

if {}: # False
    print('True')
else:
    print('False')

코드를 실행해보면 if 1: 처럼 작성하여도 참으로 인식하는 것을 알 수 있습니다.

즉, 마찬가지로 while True: 와 while 1: 도 일반적으로 같은 의미로 사용될 수 있는

이유가 위와 같다는 말입니다.

 

파이썬 비트 연산자

파이썬의 비트 연산자는 사실 지난 번에 다루었던 C언어 비트 연산자와

거의 완전히 동일합니다.

 

다만, 사용법의 차이가 조금 있다면 C언어는 고정된 자료형의 고정된 사이즈의

비트를 미리 할당 받아서 사용한다는 점인데,

 

파이썬에서는 자료형을 미리 지정하지 않고, 자료의 값에 따라서 비트의 저장 방식을

자유자재로 바꾸어 자료형을 바꿀 수 있다는 점에서

 

다른 자료형 사이에도 비트 연산을 사용하지 않도록 주의하여야 합니다.

이 경우는 실제로 TypeError가 발생하게 됩니다.

 

이제 파이썬의 비트 연산자의 케이스를 정리한 표를 살펴보겠습니다.

C언어의 비트 연산자와 마찬가지로 &, |, ~, ^를 사용합니다.

 

두 정수형 자료 사이에서 실제로 비트 연산을 수행한 코드의 결과도 보겠습니다.

반응형
# 비트 연산자

a = 11 # 00000000 00000000 00000000 00001011
b = 23 # 00000000 00000000 00000000 00010111

a & b # 00000000 00000000 00000000 000000011 = 3
a | b # 00000000 00000000 00000000 000011111 = 31
a ^ b # 00000000 00000000 00000000 000011100 = 28
~a # 11111111 11111111 11111111 11110100 = -12

같은 위치에 매칭되는 두 자리의 비트 숫자가 어떤 관계를 가지는지를

각 비트별로 연산하여 출력한 결과를 보여주고 있습니다.

 

a = 11, b = 23.5 처럼 자료형 타입이 다르다면, 비트 연산이 불가능함

유의하여 주시면 됩니다.

 

파이썬 논리 연산자

위의 예시처럼 비트 단위 연산이 아닌 조건 단위 연산을 나타내는 논리 연산자가

C언어에서는 &&, ||, ! 처럼 비트 연산자와 다소 혼동되는 형태를 가진 반면,

파이썬에서는직관적으로 쉽게 알 수 있는 and, or, not 형태로 사용해주시면 됩니다.

 

각 논리 연산자의 기능도 직관적으로 알 수 있게 표로 정리해보았습니다.

실제로 코드 상에서 논리 연산자가 적용된 케이스도 살펴보겠습니다.

# 논리 연산자

a = 7
b = 5

(a > b) and (1) # True and True -> True
(a <= b) or (a != b) # False or True -> True
not (a - b) > 0 # not True -> False

조건 사이에는 괄호로 묶어 다소 복잡한 연산자의 우선순위에 대하여

혼동되는 일이 없도록 하는 것을 권장드립니다.

 

파이썬 삼항 연산자, in과 not in

마지막으로 파이썬의 특수 연산 케이스인 삼항 연산자와

포함 여부를 체크하는 in과 not in에 대해서 정리해보겠습니다.

 

삼항 연산자는 다음과 같은 문법으로 마치 if문과 같은 결과를

한 줄에 요약하여 코딩이 가능합니다.

 

참 일때 값 if 조건 else 거짓일 때 값

 

실제 코드에서 사용 예시를 살펴보겠습니다.

a = 7
b = 5

# 삼항 연산자 (참 일때 값 if 조건 else 거짓일 때 값)
c = 5 if (a > b) else -5 # 5
d = -1 if False else 0 # 0

c에는 5가 d에는 0이 할당된 결과를 보시면 이해가 쉬울 것입니다.

 

마지막으로 특정 자료가 리스트 등 자료형에 들어있는지를 판단하는

in 구문과, 들어있지 않은지를 판단하는 not in 구문입니다.

 

이 경우는 if문 사용 등에 익숙하신 분들이라면 이미 알고 계실 수도 있는데요,

True, False를 실제로 반환하는 경우를 아래 코드를 통해서 확인해보며,

파이썬 연산자에 관한 포스팅을 마무리해보도록 하겠습니다.

# 포함 여부 판단
a = 5 in [1, 3, 5] # True
b = 6 not in [1, 3, 6] # False