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

Python 연산자 우선순위 총정리 – 우선순위 표와 예제로 쉽게 이해하기

연산자 우선순위란?

연산자 우선순위(operator precedence)는 하나의 표현식 안에 여러 연산자가 함께 사용될 때, 어떤 연산이 먼저 수행되는지를 결정하는 규칙입니다. 우선순위를 정확히 이해하면 복잡한 수식도 헷갈리지 않고 읽을 수 있습니다.

다음 표는 Python의 모든 연산자를 우선순위가 높은 것부터 낮은 것 순으로 정리한 것입니다.

번호연산자설명
1**지수 연산(거듭제곱)
2~ + -비트 보수(complement), 단항 플러스/마이너스 (마지막 두 연산자의 메소드 이름은 각각 +@, -@)
3* / % //곱셈, 나눗셈, 나머지(modulo), 버림 나눗셈(floor division)
4+ -덧셈과 뺄셈
5>> <<오른쪽 비트 시프트, 왼쪽 비트 시프트
6&비트 AND
7^ |배타적 OR(XOR), 일반 OR
8<= < > >=비교 연산자
9<> == !=동등(equality) 연산자 ※ 참고: <>는 Python 3에서 제거되었습니다.
10= %= /= //= -= += *= **=대입(할당) 연산자
11is is not식별(identity) 연산자
12in not in멤버십(membership) 연산자
13not or and논리 연산자

즉, 표의 맨 위에 있는 연산자일수록 우선순위가 높고, 맨 아래에 있을수록 우선순위가 낮습니다.

우선순위가 계산에 미치는 영향

간단한 예를 살펴보겠습니다.

x = 7 + 3 * 2

이 코드에서 x에는 20이 아니라 13이 대입됩니다. 그 이유는 곱셈(*)이 덧셈(+)보다 우선순위가 높아 3 × 2가 먼저 계산된 후 7이 더해지기 때문입니다.

예제 코드

#!/usr/bin/python3

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d      # (30 * 15) / 5
print("(a + b) * c / d 의 값 :", e)

e = ((a + b) * c) / d    # (30 * 15) / 5
print("((a + b) * c) / d 의 값 :", e)

e = (a + b) * (c / d)    # (30) * (15 / 5)
print("(a + b) * (c / d) 의 값 :", e)

e = a + (b * c) / d      # 20 + (150 / 5)
print("a + (b * c) / d 의 값 :", e)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

(a + b) * c / d 의 값 : 90.0
((a + b) * c) / d 의 값 : 90.0
(a + b) * (c / d) 의 값 : 90.0
a + (b * c) / d 의 값 : 50.0

결과 해석

앞의 세 식은 괄호의 위치만 다를 뿐 최종 결과가 모두 90으로 동일합니다. 반면 마지막 식은 곱셈(b * c)이 먼저 처리된 후 나눗셈(/ d)과 덧셈(+ )이 순차적으로 계산되면서 전체 결과가 50이 됩니다.

팁: 괄호로 계산 순서를 명확히 하세요

복잡한 수식에서는 연산자 우선순위에만 의존하기보다 괄호 ()를 적극적으로 활용하는 것이 좋습니다. 괄호는 우선순위보다 항상 먼저 적용되므로, 코드의 의도를 명확히 전달하고 실수를 줄이는 데 큰 도움이 됩니다.