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

Python에서 & 연산자와 AND 연산자의 차이점 완벽 정리

Python을 배우다 보면 &and라는 두 가지 비슷해 보이는 연산자를 만나게 됩니다. 이름은 비슷하지만 이 둘은 완전히 다른 목적으로 사용되는 연산자입니다.

AND: 논리 연산자(Logical Operator)

and논리 연산자로, 두 개의 조건식이나 불리언(Boolean) 값 사이의 참/거짓 관계를 판단할 때 사용합니다. 양쪽 값이 모두 참(True)일 때만 결과가 참이 됩니다.

a = True
b = False

print(a and b)  # False
print(a and True)  # True

조건문에서 여러 조건을 동시에 확인할 때 주로 활용됩니다.

age = 25
if age >= 18 and age < 65:
    print("성인입니다")

&: 비트 연산자(Bitwise Operator)

반면 &비트 연산자로, 숫자를 이진수 비트 단위로 변환한 후 각 비트끼리 AND 연산을 수행합니다. 두 비트가 모두 1일 때만 결과 비트가 1이 됩니다.

a = 12      # 이진수: 1100
b = 10      # 이진수: 1010

print(a & b)  # 8 (이진수: 1000)

핵심 차이점 요약

  • and: 논리 연산자 — 불리언 값이나 조건식의 참/거짓을 판단하며, 조건문에 적합합니다.
  • &: 비트 연산자 — 정수의 이진수 비트 단위로 연산하며, 마스킹(bit masking)이나 저수준 데이터 처리에 사용됩니다.

주의할 점

Python에서는 &를 불리언 값에도 사용할 수 있어 혼동하기 쉽습니다. 예를 들어 True & FalseFalse를 반환합니다. 하지만 NumPy 배열처럼 요소별(element-wise) 연산이 필요한 경우에는 and 대신 반드시 &를 사용해야 하며, 이때 연산자 우선순위 때문에 괄호로 조건을 감싸주는 것이 안전합니다.

# NumPy 예시
import numpy as np
arr = np.array([1, 2, 3, 4])
result = arr[(arr > 1) & (arr < 4)]  # [2, 3]

정리하면, 일반적인 조건 판단에는 and를, 비트 단위 계산이나 배열 요소별 연산에는 &를 사용하는 것이 올바른 방법입니다.