더북(TheBook)

2.5 연산 순서

표현식에 연산자가 두 개 이상이라면 평가 순서는 연산 순서(order of operations)를 따른다. 수학 연산자와 마찬가지로 파이썬은 수학의 관례를 따른다. 약어 PEMDAS로 이 규칙을 암기할 수 있다.

  • Parentheses(괄호): 괄호는 가장 높은 우선순위를 가지며 표현식을 원하는 순서로 평가하게 하는 데 사용된다. 괄호 안의 표현식이 먼저 평가되므로 2 * (3-1)4가 되며 (1+1)**(5-2)8이 된다. 표현식을 읽기 쉽게 만드는 용도로 괄호가 사용된다. 예를 들어 (minute * 100) / 60은 괄호를 쓰지 않아도 결과가 바뀌지 않는다.
  • Exponentiation(거듭제곱)은 그다음으로 높은 우선순위를 갖는다. 따라서 1 + 2**327이 아닌 9가 되며, 2 * 3**236이 아니라 18이 된다.
  • MultiplicationDivision(곱셈과 나눗셈): 이 둘은 Addition(덧셈)과 Subtraction(뺄셈)보다 높은 우선순위를 갖는다. 따라서 2*3-14가 아닌 5이고 6+4/25가 아닌 8이다.
  • 같은 우선순위를 갖는 연산자는 왼쪽에서 오른쪽으로 평가된다(거듭제곱은 제외). 따라서 degrees / 2 * pi는 나눗셈이 먼저 평가되고, 그 결과에 pi를 곱한다. 2π로 나누려면 괄호를 사용하거나 degrees / 2 / pi로 써야 한다.

나는 연산자 우선순위를 열심히 기억하는 편이 아니다. 그래서 표현식을 보고 순서를 얘기할 수 없을 때면 괄호를 사용해 순서를 명확하게 해두는 편이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.