대입 연산자, 말 그대로 어떤 변수에 데이터(값)을 대입해주는 겁니다.
앞 선, 산술연산자보다 훨씬 많습니다만. 그냥 대입연산자이기 때문에 겁먹을 필요는 없습니다.
"""
대입 연산자
n = 10 : 변수 n에 10을 저장
n += 10 : 변수 n에 10을 더해서 다시 n에 저장
n = n + 10과 동일한 코드
n -= 10 : 변수 n에 10을 빼서 다시 n에 저장
n = n - 10과 동일한 코드
n *= 10 : 변수 n에 10을 곱해서 다시 n에 저장
n = n * 10과 동일한 코드
n /= 10 : 변수 n에 10을 나눠서 다시 n에 저장
n = n / 10과 동일한 코드
n %= 10 : 변수 n에 10을 나누어 나머지를 다시 n에 저장
n = n % 10과 동일한 코드
n //= 10 : 변수 n에 10을 나누어 몫을 다시 n에 저장
n = n // 10과 동일한 코드
n **= 10 : 변수 n에 10을 제곱하여 다시 n에 저장
n = n ** 10과 동일한 코드
"""
기본형인 n = 10이라는 대입연산자에 사칙연산의 기능을 합해놓은 것입니다. n += 10 -> n = n +10
진행 사항은 다 똑같은 이야기이기 때문에 간단하게 += 연산자만 살펴봅니다.
# 질문 : 변수 n에 정수 20을 더해서 다시 n 변수에 저장하는 코드를 작성하시오.
n = 10
#################
n += 20 # n = n + 20
#################
print(n) #30
코드 실행 결과창을 따로 넣기도 애매해서 주석처리하였습니다.
참~ 쉽죠?
추가, 심화로, 대입연산자를 이용한 동시할당에 대해 알아봅니다.
+ 딕셔너리를 변수에 대입하면 어떻게 될까요?
"""
대입 연산자
1) 변수 = 변수2 = 변수3 = 값
2) 반드시 갯수가 동일
n, n2 = 값, 값2
3) 갯수가 다른 경우 => Packing 방법 사용 => * 사용, 임의의 위치에 사용 가능, 1개의 변수에만 사용 가능 (*변수, 변수)
Packing 연산자 => *
n, *n2 = 값, 값2, 값3 # 리스트 저장
4) 딕셔너리 사용 가능
x, y = { key : value, key2 : value2}
==> x와 y에는 딕셔너리의 key값이 저장된다.
"""
1일차 변수 시간에 동시할당을 배웠습니다만, 갯수가 다른 경우에는 어떻게 처리하는지 배우지 않았습니다.
갯수가 다를 때에는 * (속칭 별표, 아스테리스크(asterisk))를 이용하여 Packing을 해주어 동시할당을 해줄 수 있습니다.
하나의 데이터를 여러 변수에 동시 할당하거나 변수의 갯수와 데이터의 갯수가 동일할 때는 에러없이 동시할당이 가능합니다.
#데이터 하나를 여러 변수에 동시 할당, 에러 없음
a = b = c = 10
print(a, b, c, type(a))
#갯수 동일, 에러 없음
n, n2 = 10, 20
print(n, n2, type(n))
하지만 변수의 갯수와 데이터의 갯수가 상이할 때는 Error가 발생합니다.
이때, 우리는 *를 이용하여 데이터를 Packing하고 Packing된 데이터를 하나의 변수에 넣어줌으로써 시스템 스스로 변수 갯수와 데이터 갯수를 동일하게 만들고, 동시할당이 가능해집니다.
#갯수 상이, 에러 발생 # Packing
r, *r2 = 10, 20, 30 # (10, 20, 30) 튜플형, ( 10, [20, 30] )
print(r, r2, type(r2))
print("=" * 40)
*x, y, z = "홍길동", "이순신", "세종", "정종", 1000
print(x, y, z)
x, *y, z = "홍길동", "이순신", "세종", "정종", 1000
print(x, y, z)
x, y, *z = "홍길동", "이순신", "세종", "정종", 1000
print(x, y, z)
print("=" * 40)
이때에 packing 없이 할당된 변수의 타입은 데이터의 타입형과 동일하고, packing 작업을 통해 할당된 변수의 타입은 [list형]이 됩니다.
마지막으로, dict, 딕셔너리형은 대입연산자 사용이 가능할까요? 결과값은 어떻게 나올까요?
2개 이상의 변수에 2개 이상의 key 값을 갖은 딕셔너리를 동시할당 시킬 수 있고 packing도 가능합니다.
"""
4) 딕셔너리 사용 가능
x, y = { key : value, key2 : value2}
==> x와 y에는 딕셔너리의 key값이 저장된다.
"""
k, k2 = {"name" : "홍길동", "age" : 20}
print(k, k2, type(k)) # key값만 str형으로 저장 -> name, age
k, *k2 = {"name" : "홍길동", "age" : 20, "gender" : "male"}
print(k, k2, type(k), type(k2))
딕셔너리형 데이터의 value은 제외하고 key값만 변수에 저장가능합니다. 이때 변수는 str형을 갖습니다.
*을 이용하여 packing한 값을 변수에 넣어줄 수도 있는데 이때는 [list]형의 값이 저장됩니다.
이렇게 대입연산자에 대해 알아봤습니다.
다음엔 비교연산자로 찾아뵙겠습니다.
고롬 이만~
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0901_2일차_Python07_논리연산자 (0) | 2020.09.03 |
---|---|
0901_2일차_Python07_비교연산자 (0) | 2020.09.03 |
0901_2일차_Python07_연산자1_산술연산자 (0) | 2020.09.03 |
0831_1일차_연습문제 (0) | 2020.09.03 |
0831_1일차_Python06_기본형데이터_형변환 (0) | 2020.09.02 |
댓글