파이썬(Python) 연산 및 할당 연산자
연산 및 할당 연산자는 변수의 값에 특정 연산을 수행한 후 그 결과를 다시 변수에 할당하는 데 사용됩니다. 이러한 연산자를 사용하면 코드를 더 간결하고 효율적으로 작성할 수 있습니다. 예를 들어, 변수 a에 2를 할당한 후에 a의 현재 값에 3을 곱한 결과를 다시 a에 할당하려고 합니다.
이를 일반적인 방법으로는 다음과 같이 작성할 수 있습니다.연산 및 할당 연산자 위의 코드에서 *= 연산자는 곱셈 연산과 할당 연산을 한번에 수행합니다. 변수의 현재 값과 지정된 수식을 곱한 결과를 다시 변수에 할당합니다. 이런 식으로 연산과 할당을 한번에 처리할 수 있어 코드를 간결하게 작성할 수 있습니다.
✔ 예시
# 변수 a에 2를 할당합니다.
a = 2
# 변수 a의 현재 값에 3을 곱한 후 다시 변수 a에 할당합니다.
a = a * 3
# 위의 식과 동일한 결과를 얻을 수 있습니다.
# 이런 경우, 연산과 할당을 한번에 줄여서 사용할 수 있습니다.
# 아래와 같이 *= 연산자를 사용하여 변수 a의 현재 값에 3을 곱한 결과를 변수 a에 할당합니다.
a *= 3
# 이렇게 함으로써 변수 a의 값은 이전과 동일하게 6의 값을 가지게 됩니다.
연산순서
파이썬에서는 수식을 계산할 때 연산자의 우선 순위를 고려합니다. 곱셈, 나눗셈, 덧셈, 뺄셈 등 다양한 연산자가 있지만, 이러한 연산자들은 연산 순서에 따라 수식의 결과가 달라집니다.
- 괄호를 사용한 그룹화: 괄호로 둘러싼 부분이 가장 먼저 계산됩니다.
- 거듭제곱 연산자 (**)
- 단항 연산자 (+, -): 양수, 음수, 비트 반전 연산자 곱셈, 나눗셈, 나머지 연산자 (*, /, //, %) 덧셈, 뺄셈 연산자 (+, -) 비트
- 시프트 연산자 (<<, >>) 비트 AND 연산자 (&)
- 비트 XOR 연산자 (^)
- 비트 OR 연산자 (|)
- 비교 연산자 (==, !=, >, >=, <, <=, is, is not, in, not in) 논리 NOT 연산자 (not)
- 논리 AND 연산자 (and)
- 논리 OR 연산자 (or)
✔ 예시
# 괄호를 사용한 그룹화: 괄호로 둘러싼 부분이 가장 먼저 계산됩니다.
result = (2 + 3) * 4 # 괄호 안의 연산이 먼저 수행됩니다.
print("Result with grouping:", result) # 출력: Result with grouping: 20
# 거듭제곱 연산자 (**)
result = 2 ** 3 # 2의 3제곱을 계산합니다.
print("Result of exponentiation:", result) # 출력: Result of exponentiation: 8
# 단항 연산자 (+, -): 양수, 음수, 비트 반전 연산자
x = 10
result = -x # 음수를 표현합니다.
print("Result of unary operator (-):", result) # 출력: Result of unary operator (-): -10
# 곱셈, 나눗셈, 나머지 연산자 (*, /, //, %)
result = 10 * 3 # 곱셈 연산을 수행합니다.
print("Result of multiplication:", result) # 출력: Result of multiplication: 30
# 덧셈, 뺄셈 연산자 (+, -)
result = 10 + 5 # 덧셈 연산을 수행합니다.
print("Result of addition:", result) # 출력: Result of addition: 15
# 비트 시프트 연산자 (<<, >>)
result = 8 >> 2 # 8을 오른쪽으로 2비트 시프트합니다.
print("Result of bit shift:", result) # 출력: Result of bit shift: 2
# 비트 AND 연산자 (&)
result = 5 & 3 # 5와 3의 비트 AND 연산을 수행합니다.
print("Result of bit AND:", result) # 출력: Result of bit AND: 1
# 비트 XOR 연산자 (^)
result = 5 ^ 3 # 5와 3의 비트 XOR 연산을 수행합니다.
print("Result of bit XOR:", result) # 출력: Result of bit XOR: 6
# 비트 OR 연산자 (|)
result = 5 | 3 # 5와 3의 비트 OR 연산을 수행합니다.
print("Result of bit OR:", result) # 출력: Result of bit OR: 7
# 비교 연산자 (==, !=, >, >=, <, <=, is, is not, in, not in)
result = 10 > 5 # 10이 5보다 큰지 비교합니다.
print("Result of comparison:", result) # 출력: Result of comparison: True
# 논리 NOT 연산자 (not)
result = not True # True의 논리 부정을 계산합니다.
print("Result of logical NOT:", result) # 출력: Result of logical NOT: False
# 논리 AND 연산자 (and)
result = True and False # 두 값의 논리 AND 연산을 수행합니다.
print("Result of logical AND:", result) # 출력: Result of logical AND: False
# 논리 OR 연산자 (or)
result = True or False # 두 값의 논리 OR 연산을 수행합니다.
print("Result of logical OR:", result) # 출력: Result of logical OR: True
파이썬(Python) 연산 순서 변경
수식을 이해하기 쉽게 만들기 위해 괄호를 사용하는 것은 좋은 방법입니다. 괄호를 사용하면 연산자의 우선 순위에 상관없이 특정 부분을 먼저 계산할 수 있습니다. 예를 들어, 2 + (3 * 4)는 괄호 안의 곱셈 연산을 먼저 수행하므로 2 + 12로 계산됩니다. 그러나, 괄호를 너무 많이 사용하는 것은 코드를 이해하기 어렵게 만들 수 있습니다.
따라서 적절한 위치에 괄호를 사용하여 연산의 의도를 명확하게 전달하는 것이 중요합니다. 예를 들어, (2 + (3 * 4))와 같이 괄호를 중복해서 사용하는 것은 피해야 합니다. 또한, 괄호를 사용하여 연산의 순서를 변경할 수도 있습니다. 예를 들어, (2 + 3) * 4와 같이 덧셈을 먼저 수행하고 그 결과에 4를 곱하는 것으로 수식을 재구성할 수 있습니다.
✔ 예시
# 수식을 이해하기 쉽게 만들기 위해 괄호를 사용하는 것은 좋은 방법입니다.
# 괄호를 사용하면 연산자의 우선 순위에 상관없이 특정 부분을 먼저 계산할 수 있습니다.
# 예를 들어, 2 + (3 * 4)는 괄호 안의 곱셈 연산을 먼저 수행하므로 2 + 12로 계산됩니다.
result = 2 + (3 * 4)
print("Result with parentheses:", result) # 출력: Result with parentheses: 14
# 그러나, 괄호를 너무 많이 사용하는 것은 코드를 이해하기 어렵게 만들 수 있습니다.
# 따라서 적절한 위치에 괄호를 사용하여 연산의 의도를 명확하게 전달하는 것이 중요합니다.
# 예를 들어, (2 + (3 * 4))와 같이 괄호를 중복해서 사용하는 것은 피해야 합니다.
# 또한, 괄호를 사용하여 연산의 순서를 변경할 수도 있습니다.
# 예를 들어, (2 + 3) * 4와 같이 덧셈을 먼저 수행하고 그 결과에 4를 곱하는 것으로 수식을 재구성할 수 있습니다.
result = (2 + 3) * 4
print("Result with changed order:", result) # 출력: Result with changed order: 20
동일한 연산 순서일 때
연산자들은 일반적으로 왼쪽에서 오른쪽으로 계산됩니다. 이것은 같은 연산 순서를 가진 연산자들의 경우 왼쪽부터 오른쪽으로 차례대로 계산된다는 것을 의미합니다. 예를 들어, 2 + 3 + 4는 (2 + 3) + 4와 같이 왼쪽부터 오른쪽으로 계산됩니다. 그러나 몇 가지 특별한 경우에는 오른쪽에서 왼쪽으로 계산되기도 합니다. 이는 할당 연산자와 같은 연산자들에 해당됩니다. 예를 들어, a = b = c는 a = (b = c)와 같이 오른쪽에서 왼쪽으로 계산됩니다.
✔ 예시
# 연산자는 일반적으로 왼쪽에서 오른쪽으로 평가되며, 같은 우선 순위를 가진 연산자의 경우 왼쪽에서
#오른쪽으로 진행됩니다. 예를 들어, 2 + 3 + 4는 (2 + 3) + 4와 같이 왼쪽에서 오른쪽으로 계산됩니다.
#왼쪽부터 오른쪽으로 계산된 결과 = 2 + 3 + 4
print("왼쪽에서 오른쪽으로 계산된 결과:", 왼쪽부터 오른쪽으로 계산된 결과)
# 출력: 왼쪽에서 오른쪽으로 계산된 결과: 9
# 그러나 일부 특수한 경우에는 오른쪽에서 왼쪽으로 계산됩니다.
#할당 연산자와 같은 연산자들에 해당됩니다.
# 예를 들어, a = b = c는 a = (b = c)로 계산되며, 오른쪽에서 왼쪽으로 할당이 이루어집니다.
c = 5
b = 10
a = b = c # a = (b = c)로 평가되며, c가 먼저 b에 할당되고,
그 결과(c)가 a에 할당됩니다.
print("a:", a) # 출력: a: 5
print("b:", b) # 출력: b: 5
print("c:", c) # 출력: c: 5