본문 바로가기
코딩자료/파이썬기초 Published Date: 2024. 5. 25.

독학 파이썬 정복 7 (연산/할당 연산자)

by NanDA arhat
openipc.kr

파이썬(Python) 연산 및 할당 연산자

연산 및 할당 연산자는 변수의 값에 특정 연산을 수행한 후 그 결과를 다시 변수에 할당하는 데 사용됩니다. 이러한 연산자를 사용하면 코드를 더 간결하고 효율적으로 작성할 수 있습니다. 예를 들어, 변수 a에 2를 할당한 후에 a의 현재 값에 3을 곱한 결과를 다시 a에 할당하려고 합니다.


이를 일반적인 방법으로는 다음과 같이 작성할 수 있습니다.연산 및 할당 연산자 위의 코드에서 *= 연산자는 곱셈 연산과 할당 연산을 한번에 수행합니다. 변수의 현재 값과 지정된 수식을 곱한 결과를 다시 변수에 할당합니다. 이런 식으로 연산과 할당을 한번에 처리할 수 있어 코드를 간결하게 작성할 수 있습니다.


✔ 예시

# 변수 a에 2를 할당합니다.
a = 2

# 변수 a의 현재 값에 3을 곱한 후 다시 변수 a에 할당합니다.
a = a * 3
# 위의 식과 동일한 결과를 얻을 수 있습니다.

# 이런 경우, 연산과 할당을 한번에 줄여서 사용할 수 있습니다.
# 아래와 같이 *= 연산자를 사용하여 변수 a의 현재 값에 3을 곱한 결과를 변수 a에 할당합니다.
a *= 3
# 이렇게 함으로써 변수 a의 값은 이전과 동일하게 6의 값을 가지게 됩니다.


연산순서

 

파이썬에서는 수식을 계산할 때 연산자의 우선 순위를 고려합니다. 곱셈, 나눗셈, 덧셈, 뺄셈 등 다양한 연산자가 있지만, 이러한 연산자들은 연산 순서에 따라 수식의 결과가 달라집니다.


  1. 괄호를 사용한 그룹화: 괄호로 둘러싼 부분이 가장 먼저 계산됩니다.
  2. 거듭제곱 연산자 (**)
  3. 단항 연산자 (+, -): 양수, 음수, 비트 반전 연산자 곱셈, 나눗셈, 나머지 연산자 (*, /, //, %) 덧셈, 뺄셈 연산자 (+, -) 비트
  4. 시프트 연산자 (<<, >>) 비트 AND 연산자 (&)
  5. 비트 XOR 연산자 (^)
  6. 비트 OR 연산자 (|)
  7. 비교 연산자 (==, !=, >, >=, <, <=, is, is not, in, not in) 논리 NOT 연산자 (not)
  8. 논리 AND 연산자 (and)
  9. 논리 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