파이썬 연산자 우선순위

안녕하세요, 파이썬 프로그래머를 꿈꾸는 여러분! 오늘은 처음에는 조금 두려운 것처럼 보일 수 있지만, 저희가 이를 분석하면 흥미로운 것이 될 것이라고 약속드립니다. 우리는 파이썬 연산자 우선순위에 대해 이야기하겠습니다. 이를 파이썬에서의 연산의 "순서"라고 생각해보세요. 이 EXCITING한 여정을 함께 시작해봅시다!

Python - Operator Precedence

연산자 우선순위란?

파이썬의 구체적인 세부 사항에 뛰어들기 전에, 일반적으로 연산자 우선순위란 무엇인지 이해해보겠습니다. 바쁜 주방이라는 상상을 해보세요 (여기서 계속 따라와 주세요, 이 비유가 의미를 가질 것이라고 약속드립니다). 이 주방에서는 다른 셰프들이 각기 다른 업무를 담당합니다. 일부는 채소를 다듬고, 다른 일부는 지지고, 일부는 플레이팅을 합니다. 이러한 작업들은 완벽한 요리를 만들기 위해 특정 순서로 수행되어야 합니다. 이 순서는 프로그래밍에서 연산자 우선순위와 유사합니다.

파이썬에서 여러 연산자가 포함된 표현식을 작성할 때, 연산자 우선순위는 이러한 연산이 어떤 순서로 수행될지 결정합니다. 주방 비유처럼, 일부 연산은 다른 연산보다 우선합니다.

간단한 예를 보겠습니다:

result = 5 + 3 * 2
print(result)

출력은 무엇이 될까요? 11이라고 생각하셨나요? 그렇다면 정답입니다! 하지만 왜일까요?

이때 연산자 우선순위가 도입됩니다. 파이썬(그리고 대부분의 프로그래밍 언어)에서는 곱셈이 더하기보다 더 높은 우선순위를 가집니다. 따라서 표현식은 다음과 같이 평가됩니다:

  1. 먼저, 3 * 2가 계산되어 6이 됩니다
  2. 그런 다음, 5가 6에 더해져 11이 됩니다

이 순서를 변경하려면 괄호를 사용하면 됩니다:

result = (5 + 3) * 2
print(result)

이제 출력은 16이 됩니다. 왜냐하면 괄호가 가장 높은 우선순위를 가지기 때문에, 덧셈이 곱셈보다 먼저被执行됩니다.

파이썬 연산자 우선순위 표

이제 개념을 이해했으니, 파이썬의 전체 연산자 우선순위 표를 살펴보겠습니다. 표의 맨 위에 있는 연산자가 아래에 있는 연산자보다 더 높은 우선순위를 가지는 것을 기억하세요.

우선순위 연산자 설명
1 () 괄호
2 ** 지수
3 +x, -x, ~x 단항 플러스, 마이너스, 비트별 NOT
4 *, /, //, % 곱셈, 나눗셈, 바닥 나눗셈, 나머지
5 +, - 덧셈 및 뺄셈
6 <<, >> 비트별 이동 연산자
7 & 비트별 AND
8 ^ 비트별 XOR
9 | 비트별 OR
10 ==, !=, >, >=, <, <=, is, is not, in, not in 비교,同一성, 멤버십 연산자
11 not 논리적 NOT
12 and 논리적 AND
13 or 논리적 OR

이 연산자 중 일부가 익숙하지 않也不要 두려워요. 지금은 가장 일반적인 연산자에만 집중하겠습니다.

파이썬 연산자 우선순위 예제

이 우선순위 표가 실제로 어떻게 작동하는지 예제를 통해 살펴보겠습니다.

예제 1: 산술 연산자

result = 10 + 5 * 2 - 3 ** 2
print(result)

이를 단계별로 분석해보겠습니다:

  1. 3 ** 2 = 9 (지수가 가장 높은 우선순위)
  2. 5 * 2 = 10 (곱셈이 다음)
  3. 10 + 10 - 9 = 11 (덧셈과 뺄셈은 왼쪽에서 오른쪽으로 수행)

따라서 최종 결과는 11입니다.

예제 2: 비교 및 논리 연산자

x = 5
y = 10
z = 15

result = x < y and y < z or x == z
print(result)

이렇게 평가됩니다:

  1. x < y는 True
  2. y < z는 True
  3. x == z는 False
  4. True and True는 True
  5. True or False는 True

따라서 최종 결과는 True입니다.

예제 3: 다른 종류의 연산자 혼합

a = 2
b = 3
c = 4

result = a * b ** 2 + c > (a + b) * c and not a == b
print(result)

이를 분석해보겠습니다:

  1. b ** 2 = 9 (지수가 먼저)
  2. a * 9 = 18 (곱셈이 다음)
  3. 18 + c = 22 (덧셈)
  4. (a + b) = 5 (괄호가 가장 높은 우선순위)
  5. 5 * c = 20 (곱셈)
  6. 22 > 20는 True (비교)
  7. a == b는 False (등가 비교)
  8. not False는 True (논리적 NOT)
  9. True and True는 True (논리적 AND)

최종 결과는 True입니다.

결론

연산자 우선순위를 이해하는 것은 올바른 파이썬 코드를 작성하는 데 필수적입니다. 이는 여러분의 표현식이 어떻게 평가될지 예측하고 예상치 못한 결과를 피하는 데 도움합니다. 근심될 때는 괄호를 사용하여 연산의 순서를 명확히 정의하는 것을 기억하세요. 이는 코드가 의도대로 작동하는 것을 보장하며, 다른 사람들(그리고 미래의 여러분)에게도 더 가독성 있게 만듭니다.

파이썬 여정을 계속하면서, 이러한 우선순위 규칙에 더 익숙해질 것입니다. 처음에는 두려울 수 있지만, 연습을 통해 자연스럽게 익숙해질 것입니다. 계속 코딩하고 실험하며, 가장 중요한 것은 즐기세요! 결국 프로그래밍은 요리하는 것과 마찬가지로 – 연습을 많이 하면 "요리"가 더 잘 나오죠. 코딩 잘하시고, 미래의 파이썬 셰프들을 위한 즐거운 코딩 되세요!

Credits: Image by storyset