본문 바로가기

할당연산

1. 할당연산자

할당 연산자는 변수에 값을 저장하는 데 사용됩니다. 기본적인 할당 연산자는 =입니다. 할당 연산자의 우선순위는 대부분의 다른 연산자들보다 낮습니다. 이는 식 내에서 할당 연산자가 마지막으로 평가된다는 것을 의미합니다. 따라서 할당 전에 모든 연산이 수행됩니다.

복합 할당 연산자를 사용하면 코드가 간결해지고 가독성이 향상됩니다. 'x = x + 1' 대신 'x += 1'을 사용하세요.
x = 10
x = True and False
x = 10
x = x + 1

파이썬에는 값과 변수의 현재 값을 조합하여 할당하는 복합 할당 연산자가 있습니다. 이를 잘 사용할 경우 코드를 짧게 만들 수 있어서, 코드를 보기 좋게 할 수 있고 실수할 확률도 줄어듭니다.

기호이름설명예제동일한 코드
=대입연산자의 오른쪽 값을 왼쪽 변수에 할당합니다.a = ba = b
+=덧셈 대입연산자의 왼쪽 변수 값과 오른쪽 값을 더한 결과를 왼쪽 변수에 할당합니다.a += ba = a + b
-=뺄셈 대입연산자의 왼쪽 변수의 값에서 오른쪽 값을 뺀 결과를 왼쪽 변수에 할당합니다.a -= ba = a - b
*=곱셈 대입연산자의 왼쪽 변수의 값과 오른쪽 값을 곱한 결과를 왼쪽 변수에 할당합니다.a *= ba = a * b
/=나눗셈 대입연산자의 왼쪽 변수의 값을 오른쪽 값만큼 나눈 결과를 왼쪽 변수에 할당합니다.a /= ba = a / b
//=몫 대입연산자의 왼쪽 변수의 값을 오른쪽 값만큼 나눈 몫을 왼쪽 변수에 할당합니다.a //= ba = a // b
%=나머지 연산 대입연산자의 왼쪽 변수의 값을 오른쪽 값만큼 나눈 나머지를 왼쪽 변수에 할당합니다.a %= ba = a % b
**=제곱 대입연산자의 왼쪽 변수의 값에서 오른쪽 값만큼 제곱한 결과를 왼쪽 변수에 할당합니다.a **= ba = a ** b

복합할당연산자도 연산자의 우선순위가 다른 연산자보다 낮습니다. 아래와 같이 실행될 수 있습니다.

x = 5
y = 2
z = 10

x += y * z  # y * z 연산 후 x에 값을 할당합니다.
print(x)  # 결과: 25

만약, 할당 연산에 관련된 컨벤션이 있다면 그 방법을 따르는 것이 좋습니다.

2. 나아가기

a += b와 a = a + b는 같은 뜻처럼 보이지만 완전히 같지는 않습니다. 리스트처럼 변경 가능한 자료형에서는 결과가 달라집니다.

a = [1, 2, 3]
b = a
a += [4]        # a가 가리키던 리스트를 그 자리에서 수정합니다.
print(a)        # [1, 2, 3, 4]
print(b)        # [1, 2, 3, 4], 같은 리스트를 보고 있어 함께 바뀝니다.
a = [1, 2, 3]
b = a
a = a + [4]     # 새 리스트를 만들어 a가 그것을 가리킵니다.
print(a)        # [1, 2, 3, 4]
print(b)        # [1, 2, 3], b는 원래 리스트를 그대로 보고 있습니다.

+=는 원본을 그 자리에서 고치고, = +는 새 객체를 만들어 이름을 옮겨 붙입니다. 같은 리스트를 여러 이름이 함께 참조하고 있을 때 이 차이가 버그로 이어지곤 합니다. 문자열이나 튜플처럼 변경 불가능한 자료형에서는 +=도 새 객체를 만들기 때문에 이런 차이가 생기지 않습니다.

할당연산 - 견고한 파이썬 | 위니버시티