파이썬에서 &= 연산자는 비트 AND 연산자(&)와 대입 연산자(=)를 결합한 복합 할당 연산자입니다. 변수에 저장된 값과 다른 값을 비트 단위로 AND 연산한 뒤, 그 결과를 다시 같은 변수에 할당하는 역할을 합니다.
&= 연산자의 내부 동작 원리
&=는 일종의 문법적 설탕(syntactic sugar)으로, 내부적으로는 객체의 object.__iand__() 메서드를 호출합니다. 파이썬 공식 문서에 따르면 이 메서드는 다음과 같은 역할을 합니다.
이 메서드들은 확장 산술 할당(+=,-=,*=,@=,/=,//=,%=,**=,<<=,>>=,&=,^=,|=)을 구현하기 위해 호출됩니다. 이 메서드들은 가능한 한 연산을 제자리(in-place)에서 수행하여 자기 자신(self)을 수정하고 그 결과를 반환해야 합니다.
즉, a &= b는 a = a & b와 결과적으로 같지만, 가변(mutable) 객체의 경우 새로운 객체를 생성하지 않고 기존 객체를 직접 수정할 수 있어 더 효율적일 수 있습니다.
사용 예제
다음 예제를 통해 &= 연산자의 동작을 확인해 보겠습니다.
a = 6 # 2진수로 110 b = 5 # 2진수로 101 a &= b # 110과 101의 비트 AND 연산 결과인 100, 즉 4가 됨 print(a)
실행 결과
4
동작 설명
비트 AND 연산은 두 숫자의 각 비트를 비교하여 양쪽 모두 1일 때만 1을 반환합니다.
a = 6→ 2진수110b = 5→ 2진수101110 & 101→100(2진수), 즉 십진수 4
연산 후 a는 제자리에서 수정되어 6에서 4로 변경됩니다. 이처럼 &= 연산자는 기존 변수를 갱신하는 방식으로 동작하며, 코드를 더 간결하게 만들어 줍니다.
이러한 특수 메서드에 대한 자세한 내용은 파이썬 공식 데이터 모델 문서에서 확인할 수 있습니다.