티스토리 뷰
목차
Before Init
짧게 요약할 수 있을지 모르겠지만 시작해 보자.
파이썬은 굉장히 객체지향적인 프로그래밍 언어이다.
제목에 자료형이라고 적어두고 갑자기 왜 객체지향이 나오냐 하면,
파이썬에는 기본형 자료형이라는 것이 존재하지 않는다. 참조형 자료형 뿐이다.
즉 아래와 같은 변수 A가 존재할 때,
A = 1
A에 저장되는 값은 숫자 1이 아니라 정수형 객체 1의 주소가 된다.
또한 위 변수 선언에서 알 수 있듯이,
파이썬은 동적으로(내부적으로 알아서) 변수의 타입을 지정한다. 물론 원하지 않으면 변경도 가능하다.
추가로 아마 다른 글에서 언급하게 되겠지만 위와 같은 정수형은 불변(immutable) 형 자료형인데,
이 말은 한 번 선언된 변수의 값을 바꿀 수 없다는 말이 아니다.
앞서 말했듯 파이썬의 모든 변수는 객체의 주소를 저장하게 되는데, 이때 변수(이도 역시 객체이다)가 가리키고 있는
정수형 객체의 값, 그러니까 1 혹은 2라는 객체의 값을 변화시킬 수 없다는 뜻이다.
그러니까 아래와 같은 코드는 에러 없이 동작한다.
A = 1
A = 13
A = 37
print(A)
37
그럼 계속해서 파이썬의 기본 자료형에 대해 아주 얕게 살펴보자.
Python Data Types
자료마다 분류가 조금씩 다르지만, 파이썬은 대략 아래와 같은 데이터 타입을 기본으로 제공한다.
Category | Type |
Numeric Data Types | int, float, complex |
String Data Types | str |
Binary Data Types | bytes, bytearray, memoryview |
Boolean Data Type | bool |
Sequence Data Types | list, tuple, range |
Mapping Data Type | dict |
Set Data Types | set, frozenset |
조금 뜬금없지만 복소수를 기본으로 제공한다는 사실이 반가웠다.
계속해서 카테고리 별로 분류해서 특성만 짚고 넘어가자.
Numeric Data Types
단어 그대로 숫자형 데이터 타입이다.
파이썬 2에서는 큰 숫자를 담기 위한 별도의 자료형(long)이 존재했으나
3으로 올라와 int의 크기제한이 사라지면서 삭제되었다.
int
이름 그대로이다. 크기의 제한이 없으며, 8진수나 16진수도 바로 입력이 가능하다는 특징이 있다.
a = 123
b = 0o173 # 8진수
c = 0x7b # 16진수
float
부동소수점 방식, 즉 실수형 자료형이다. 파이썬에는 double이 존재하지 않고 float으로 일원화되어 있다.
소수점을 사용해 표시하며, 아래 예제처럼 e 혹은 E를 이용해 가수-지수 표현법을 사용할 수도 있다.
a = 12.3
b = 12e2 # 1200.0
c = 12e-1 # 1.2
complex
복소수 자료형이다. 보편적으로 쓰는 형태인 실수부+허수부를 사용한다.
a = 12 + 3j
b = 1 - 23j
c = complex(1, 23)
String Data Type
문자열 자료형이다. 파이썬에서는 큰 따옴표(")와 작은따옴표(')를 구분하지 않는다.
짝만 맞춰서 쓰면 두 기호는 완전히 동일한 기능을 한다.
이와 연계되어 파이썬엔 char 타입의 자료형이 존재하지 않는다.
전부 문자열로 처리된다.
그러니까 아래 변수는 전부 문자열 타입이다.
a = 'abcd'
b = 'a'
c = ''
c와 같이 비어있는(blank) 변수도 문자열로 취급할 수 있다.
또한 독특하게도 아래와 같은 사용법도 존재하는데,
a = '''
여러줄에 걸쳐서
문장을 작성하고 싶을 때
따옴표를 세 개 겹쳐 씁니다.
'''
b = """
여러줄에 걸쳐서
문장을 작성하고 싶을 때
따옴표를 세 개 겹쳐 씁니다.
크건 작건 상관 없습니다.
"""
보통 클래스나 메서드의 앞부분에 많이 쓰이는 듯했다.
Binary Data Types
bytes
바이트로 이루어진, 그러니까 아스키코드 문자열을 위한 타입이다.
아스키코드 이외의 값을 입력하면 에러가 나며, 아래와 같이 앞에 b를 함께 적는다.
바이트 형은 한 번 바인딩되면 값을 바꿀 수 없다.
a = b'cdef'
bytearray
위와 비슷하게 바이트 단위의 값을 저장하지만, 요소를 변경할 수 있는 자료형이다.
문자열로 값을 추가하거나 변경하려면 ord() 함수를 이용해 아스키코드 값을 넣어주어야 한다.
a = bytearray(b'cdef')
a[0] = ord('a')
a
bytearray(b'adef')
memoryview
memoryview()는 bytes, bytearray 형식을 위한 자료형이다.
외부에서 입력이 들어오거나 자료를 읽을 때, 메모리에 바로 저장하는 것이 아닌 버퍼를 사용해서
속도가 굉장히 빠르다는 특징이 있다.
물론 버퍼에 저장된 데이터를 수정하는 것도 가능하다.
Boolean Data Type
bool타입은 참(True)과 거짓(False)만을 값으로 가지는 자료형이다.
자바에서도 많이 봤으니 딱히 언급할 건 없지만,
파이썬에선 앞글자를 대문자로 적는다.
a = True
b = False
Sequence Data Types
시퀀스 데이터 타입은 자바의 경험으로 미루어볼 때 가장 많이 사용하게 될 자료형일 것이다.
이름처럼 메모리에 연속으로 저장되는 특성이 있으며, 효율적인 사용을 위한 다양한 함수를 제공한다.
list
파이썬의 리스트는 여러모로 독특하다. 이 부분에 대해선 글을 아예 따로 파야 할 정도.
사용하기에 따라 리스트로도, 스택으로도, 큐로도 보일 정도로 다양한 기본 함수가 존재한다.
또한 당연하게도(?) 값의 변경이 가능하며, 파이썬 특유의 동적 할당 덕분에
다양한 자료형을 별 제약 없이 한 번에 넣는 게 가능하다.
a = [1, 'b', True, ['cd', 34]]
print(a)
[1, 'b', True, ['cd', 34]]
사실 조금 사용해 보니 글 하나로는 어림도 없고, 계속 갱신해 나가야 할 것 같다.
이번 글은 소개글이니까 여기까지만.
tuple
튜플은 리스트와 유사한 자료형이다.
차이점은 대괄호가 아닌 소괄호'()'로 생성한다는 점이며
한 번 생성된 튜플은 변경이 불가능하다는 점이다.
또한 요소가 하나밖에 없는 경우 반드시 그 뒤에 쉼표를 달아주어야 한다.
그렇지 않으면 파이썬이 알아서 괄호를 제거하고 값을 저장한다.
그 외에는 리스트와 동일하게 다루면 된다.
a = (1, 'b', True, ('cd', 34))
b = (1,)
range
range 자료형 역시 위의 두 자료형과 비슷하며, range(2)와 같이 생성한다.
print(range(2))
range(0, 2)
0부터 2까지의 정수를 포함하는 리스트로 간주할 수 있으며, 반복문을 돌 때 유용하게 쓰인다.
Mapping Data Type
dict
매핑 자료형, 딕셔너리 자료형은 익숙한 표현대로 키-값으로 데이터를 관리하는 자료형이다.
키 생성 과정에선 기본적으로 해시 함수가 사용된다고 한다.
키는 유일하지만 값은 그렇지 않으며, 중괄호{}를 써서 나타낸다.
a = {'b':1, 'c':2}
d1
{'b':1, 'c':2}
a['b']
1
대충 많이 보던 맵과 비슷하다고 정리하고 넘어가자.
Set Data Types
셋 데이터 타입 역시 익숙한 이름이다.
말 그대로 집합이기 때문에 중복을 허용하지 않으며 순서가 보장되지 않는 이 자료형은
중괄호나 반복문, 함수를 를 사용해서 생성할 수 있다.
a = {'b','c','d'}
b = set('bcd')
c = {i for i in 'bcd'}
set과 frozenset의 차이는 값을 바꿀 수 있느냐 그렇지 않느냐의 차이이기 때문에 따로 분리하진 않는다.
이렇게 파이썬 기본 자료형 훑어보기가 끝났다.
비슷하면서도 달라서 눈이 가는 자료형도 있고, 헷갈리는 것도 있다.
천천히 하나씩 파보는 걸로.
'Python > Python' 카테고리의 다른 글
[Python]enumerate() 내장함수 (0) | 2023.05.21 |
---|---|
[Python]컴프리헨션(Comprehension) (0) | 2023.04.30 |
[Python]파이썬으로 팩토리얼 구하기, 네 가지 방법 (0) | 2023.04.12 |
[Python]최대공약수, 최소공배수 (3) | 2023.04.09 |
[Python]set 자료형 각종 연산 (1) | 2023.04.08 |
[Python]함수 만들고 호출하기 (0) | 2023.02.05 |
- Total
- Today
- Yesterday
- 여행
- 자바
- 세계일주
- 동적계획법
- Backjoon
- java
- 파이썬
- 세모
- Algorithm
- 스프링
- 스트림
- 면접 준비
- 리스트
- 칼이사
- 유럽여행
- BOJ
- 남미
- 야경
- 기술면접
- 맛집
- 지지
- RX100M5
- spring
- a6000
- 알고리즘
- 세계여행
- 백준
- Python
- 유럽
- 중남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |