Python Mission 1: 가변객체, 불변객체, 자료형

백은진·2020년 8월 29일
0

TIL (Today I Learned)

목록 보기
59/106

(총 6개의 포스트로 이어지는 글입니다.)

🙋‍ Mission 🙆‍

  1. 파이썬에서 가변객체와 불변객체는 무엇이며, 어떠한 자료형이 있는지 공부한다.
  2. BTS혹은 레드벨벳의 멤버정보를 딕셔너리로 구현해주세요.
  3. 스트링, 리스트, 딕셔너리를 반복문으로 돌면서 인자를 출력하는 함수를 작성해보세요.
  4. for in 반복문을 작성해보고, break, continue의 쓰임새도 알아보세요.
  5. if와 else를 이용해 조건문을 작성해보세요.
  6. list method 중 append, pop, sort 을 활용한 함수를 작성해보세요.

1. 파이썬에서 가변객체와 불변객체는 무엇이며, 어떠한 자료형이 있는지 공부한다.

1.1 가변객체, 불변객체

가변객체(Mutable object): 가변 객체는 생성된 후 상태를 변경할 수 있는 객체이다.
불변객체(Immutable object): 불변 객체는 생성된 후 상태를 변경할 수 없는 객체이다.

객체란?

파이썬에서는 모든 것이 객체이다.
객체란 어떤 속성값과 행동을 가지고 있는 데이터이다.
파이썬의 숫자, 문자, 함수 등 모든 것은 여러 속성과 행동을 가지고 있는 데이터이다.
(출처: https://wikidocs.net/20457)

다시 말해, 객체란 변수와 함수 따위를 그룹으로 묶은 것이다.
이 객체를 조립해 프로그램을 만드는 것이 객체 지향 프로그래밍이며,
객체 지향 프로그래밍은 시간과 재료를 효율적으로 사용하는 이점이 있다.

참조 복사 기법 영향

대부분의 객체 지향 언어에서 객체는 참조(reference) 형태로 전달하고 받는다.
불변 객체는 객체를 복제할 때, 객체 전체가 아닌 참조를 복사한다. 참조는 크기가 작아 메모리 절감 및 프로그램 성능 유지에 좋다. 이를 '참조 복사 기법'이라고 한다.

반면, 가변 객체에 참조 복사 기법을 사용하는 것은 큰 리스크가 따른다. 이유는 다음과 같다.
가변 객체를 참조하고 있는 한 장소에서 객체를 변경하면, 그 객체를 공유하는 모든 장소가 영향을 받는다. 따라서, 참조를 공유하는 모든 장소에 사실을 통지하고 대처하는 추가 대응이 필요하기 때문이다.
(출처: 위키피디아/불변객체)

1.2 파이썬의 자료형

자료형이란 프로그래밍에서 값을 담는 그릇으로, 자료를 일정한 기준에 따라 구분한다.

자료형은 숫자형(int, float, complex), 불리언(bool), 문자열(str), 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dict) 등이 있다.

이런 자료형은 객체 성격에 따라 두 가지로 나눌 수 있다.

가변 객체 = [list, set, dict]
불변 객체 = [int, float, complex, bool, str, tuple]

혹은 자료형의 성격에 따라 세 가지로 나눌 수도 있다.

수치 자료형 = [int, float, complex]
불 자료형 = [bool]
군집 자료형 = [str, list, tuple, set, dict]

(수치 자료형은 숫자를, 불 자료형은 참과 거짓을, 군집 자료형은 여러 데이터를 저장한다. 출처: https://withcoding.com/66)

숫자형(int, float, complex)

int는 integer의 축약어로 정수형 자료이다.
1, 12, 124와 같은 정수를 담는다.

float는 float는 간단하게 실수를 나타낸다.
3.14, 314e-2와 같은 지수형 표현을 담는다.

complex복소수를 나타낸다.
3 + 4j와 같이 실수부와 허수부를 구분한다.
(참고: https://withcoding.com/66)

불(bool)

bool은 George Boole이라는 수학자의 이름을 따 만든 단어 Boolean의 축약어로, True와 False를 구분하는 자료형이다. 참과 거짓을 저장할 수 있다.

문자열(str)

str은 string의 축약어로 텍스트를 담고 있는 자료형이다.
큰 따옴표 " " 혹은 작은 따옴표 ' '로 문자를 감싼다.
여러줄에 문자 입력을 원할 경우, 줄의 마지막에 역 슬래시 \ 를 입력한다.

문자 하나하나에 인덱스가 부여되기 때문에 index 및 slicing이 가능하다.
그러나 변경이 가능하지 않은 불변 객체(immutable object)이기 때문에 글 수정은 가능하지 않다.

더하기 + 및 곱하기 * 를 통해 문자를 합치고 여러 개로 만들 수 있다.

* 파이썬에서 여러줄의 주석을 달때는 큰 따옴표 세 개 """ """로 글을 감싼다.

리스트(list)

list는 여러 데이터를 담고 있는 바구니로 비유할 수 있다.
여러 종류의 자료형을 담을 수 있으며, str과 같이 index 및 slicing이 가능하다.
l = [] 와 같이 대괄호 내에 자료를 입력한다.

str과 달리 list는 가변 객체로서(mutable object) 삽입(.append()), 삭제(.remove()), 정렬(.sort()) 등을 사용할 수 있다.

더하기 + 및 곱하기 * 를 통해 데이터를 합치고 여러 개로 만들 수 있다.

튜플(tuple)

tuple은 list와 거의 동일하나, 불변 객체(immutable object)의 성격을 가진다.
t = () 와 같이 소괄호 내에 자료를 입력한다.

몇 개 인지 세는 .count() 혹은 인덱스값을 확인하는 .index() 메소드를 사용할 수 있다.
a, b = b, a 와 같은 swap을 쉽게 할 수 있는 점과, 속도가 빠르다는 이점이 있다.

집합(set)

set은 s = {} 와 같이 중괄호 내에 자료를 입력한다.

인덱스값을 받지 못하기 때문에 index 및 slicing이 가능하지 않다.

같은 값을 중복해서 저장할 수는 없으나,
.add() 및 .romove() 메소드를 통해 값을 추가하고 제거할 수 있다.

0 in s 혹은 0 not in s 와 같은 연산자를 통해,
어떤 데이터가 집합 안에 있는지 여부를 알 수 있다.

딕셔너리(dict)

딕셔너리는 set의 한 종류로 set과 비슷한 성격을 가진다.
다만, 딕셔너리라는 이름에 걸맞게 정보를 key : value로 저장할 수 있다.
(* 값(value)은 중복될 수 있으나, 키(key)는 중복될 수 없다.)

d = {'k1' : 'v1', 'k2' : 'v2'} 과 같이 중괄호 내에 자료를 입력한다.

정보 확인

d = {'k1' : 'v1', 'k2' : 'v2'}
d['k1']
>>> 'v1'

정보 추가

d = {'k1' : 'v1', 'k2' : 'v2'}
d['k3'] = 'v3'
>>> d
d = {'k1' : 'v1', 'k2' : 'v2', 'k3' : 'v3'}

정보 삭제

del d['k2']
>>> d
d = {'k1' : 'v1', 'k3' : 'v3'}

정보 출력

for a, b in d.items():
    print ("Key:" + a, "Value:" + b)

('Key:k3', 'Value:v3')
('Key:k1', 'Value:v1')

* 추가) 자료형 확인 방법

type() 함수 내에 원하는 자료를 입력하면, 터미널에서 해당 자료형을 확인할 수 있다.

profile
💡 Software Engineer - F.E

0개의 댓글