2.5 연산 순서
표현식에 연산자가 두 개 이상이라면 평가 순서는 연산 순서(order of operations)를 따른다. 수학 연산자와 마찬가지로 파이썬은 수학의 관례를 따른다. 약어 PEMDAS로 이 규칙을 암기할 수 있다.
- • Parentheses(괄호): 괄호는 가장 높은 우선순위를 가지며 표현식을 원하는 순서로 평가하게 하는 데 사용된다. 괄호 안의 표현식이 먼저 평가되므로 2 * (3-1)은 4가 되며 (1+1)**(5-2)는 8이 된다. 표현식을 읽기 쉽게 만드는 용도로 괄호가 사용된다. 예를 들어 (minute * 100) / 60은 괄호를 쓰지 않아도 결과가 바뀌지 않는다.
- • Exponentiation(거듭제곱)은 그다음으로 높은 우선순위를 갖는다. 따라서 1 + 2**3은 27이 아닌 9가 되며, 2 * 3**2는 36이 아니라 18이 된다.
- • Multiplication과 Division(곱셈과 나눗셈): 이 둘은 Addition(덧셈)과 Subtraction(뺄셈)보다 높은 우선순위를 갖는다. 따라서 2*3-1은 4가 아닌 5이고 6+4/2는 5가 아닌 8이다.
- • 같은 우선순위를 갖는 연산자는 왼쪽에서 오른쪽으로 평가된다(거듭제곱은 제외). 따라서 degrees / 2 * pi는 나눗셈이 먼저 평가되고, 그 결과에 pi를 곱한다. 2π로 나누려면 괄호를 사용하거나 degrees / 2 / pi로 써야 한다.
나는 연산자 우선순위를 열심히 기억하는 편이 아니다. 그래서 표현식을 보고 순서를 얘기할 수 없을 때면 괄호를 사용해 순서를 명확하게 해두는 편이다.