파이썬의 자료형
파이썬에는 다양한 자료형들이 있지만, 그 중 기본적으로 많이 쓰이는 자료형에는 다음과 같은 것들이 있다.
- NoneType: 논타입
- int : 정수
- float : 실수
- complex : 복소수
- bool : 불린
- str : 문자열
- list : 리스트
- tuple : 튜플
- set : 집합
- dict : 사전
- function: 함수
참고: type()을 통해 자료형 확인
# 데이터 타입
str1 = "Python"
bool = True
float = 10.0
int = 1
# 데이터 타입 출력
print(type(str1)) # <class 'str'>
print(type(bool)) # <class 'bool'>
print(type(float)) # <class 'float'>
print(type(int)) # <class 'int'>
type()
함수를 사용하면 자료형을 확인할 수 있다. type()
함수에 데이터 또는 변수를 인자로 넣으면 해당 데이터 또는 변수의 자료형을 확인할 수 있다.
NoneType : 논타입
NoneType은 말 그대로 '값이 없다'는 뜻으로, 'None'이라는 값을 가지고 있는 데이터 타입이다. None은 주로 다음과 같은 상황에서 반환되는 값이다.
- 호출한 함수가 반환 값을 가지고 있지 않을 때
- 무언가를 검색하였는데(Query) 해당 값을 찾을 수 없을 때
- 접근하는 key가 dict에 존재하지 않을 때
정리하자면, 실제로 연산에 활용하는 데이터 값이라기 보다는 "존재하지 않음"이라고 알려주는 값이다. 따라서 False나 0과는 다른 뜻이다. False는 "거짓"이라는 의미, 0은 "무언가를 세 본 결과 그 갯수가 0"는 의미를 가지고 있지만, None은 "존재하지 않는다"는 의미를 가지고 있다. 즉, 파이썬의 NoneType은 C언어의 Null과 비슷한 것으로, 실제 활용하는 데이터가 아니기 때문에 NoneType 값에 대한 연산을 하는 것은 불가능하다.
Query를 진행할 때 값이 존재하지 않으면 None이 반환되면서 에러를 생성하기 때문에 다음과 같은 조건문으로 체크해주는 것이 좋다.
if x is not None:
# 실행할 코드 작성
int, float, complex : 정수, 실수, 복소수
int는 정수, float는 실수, complex는 복소수를 나타내는 데이터 타입으로, 모두 숫자 타입이다.
○ int의 선언
# 정수 선언
i1 = 10
i2 = -10
big_int = 999999999999999999999999999999999999999 # 큰 값 따로 처리해 줄 필요 X, 파이썬이 내부적 처리
파이썬은 다른 많은 프로그래밍 언어와 다르게 범위가 무한대인 정수 자료형을 가지고 있다. 즉, 정수 오버플로우(Integer Overflow)가 생기지 않는다. 따라서 아무리 큰 값을 저장하더라도 하나의 자료형인 int로 모두 해결할 수 있다.
○ float의 선언
# 실수 선언
f1 = 3.14159265358979
f2 = -10.0
f3 = 1/3
파이썬에서 실수를 선언하기 위해서는 소수점을 명시해줘야 한다. 따라서 같은 10이라도 int로는 10
, 실수로는 10.0
으로 표현해야 한다. 단, .
앞이나 뒤의 0은 생략 가능하므로 10.
으로 표현해도 된다.
파이썬에서도 다른 프로그래밍 언어와 마찬가지로 부동소수점 오차는 생길 수 있으므로, float형을 쓸 때 주의해야 한다.
○ complex의 선언
# 복소수 선언
c1 = 2 + 2j
c2=complex(3, -3)
파이썬에서는 복소수를 두 가지 방법으로 표현할 수 있다. 하나는 허수(imaginary number) 뒤에 j를 붙여주는 것이고, 다른 하나는 complex([real[,imag]])
클래스를 통해 실수부와 허수부 값을 전달한 후, 리턴 값으로 복소수를 받는 것이다.
bool : 불린
#
bool1 = True
bool2 = False
불린 타입은 True(참)과 False(거짓) 값을 가질 수 있는 데이터 타입이다. 파이썬에서 True와 False는 파이썬의 예약어이기 때문에 반드시 첫 글자를 대문자
로 작성해야 한다. 참고로, 다른 자료형에도 참과 거짓이 되는 값이 존재한다. 문자열, 리스트, 튜플, 딕셔너리가 원소를 가지지 않고 비어 있으면(즉, ""
, [ ]
, ( )
, { }
라면) 거짓을 의미하고, 하나 이상의 원소를 가지면 참을 의미한다. 숫자에서는 값이 0
이라면 거짓, 0이 아닌 다른 수
라면 참이 된다.
str : 문자열
# 문자열 선언-4가지 방법 모두 가능
str1 = "Python"
str2 = 'Python'
multi_str1 = """
문자열
멀티라인
"""
multi_str2 = '''
문자열
멀티라인
'''
파이썬에서는 4가지 방법을 통해 문자열을 생성할 수 있다. 큰따옴표, 작은 따옴표, 큰따옴표 세 개, 작은 따옴표 세 개가 그 방법이다. 이렇게 여러 가지 방법을 지원하는 이유는 문자열 자체에 따옴표가 있을 경우를 위해서 이다. str = "I'm Python."
처럼, 문자열 자체에 작은 따옴표가 있는 경우 해당 문자열을 큰따옴표로 둘러싸주면 에러가 생기지 않는다. 문자열에 있는 따옴표 종류와 다른 따옴표를 사용하기만 하면 된다.
한편, '''
와 """
는 멀티라인 문자열을 사용하고 싶을 때 쓸 수 있다. 해당 방식을 사용하면 이스케이프 문자 \n
을 사용하지 않고도 문자열 내부에서 줄바꿈을 바로 할 수 있다.
list : 리스트
리스트 자료형은 순서, 중복, 수정, 삭제를 모두 지원하는 자료형으로, [ ]
괄호를 사용한다.
# 빈 list 선언
list1 = []
list2 = list()
# 원소가 있는 list 선언
list3 = [1, 2, 3, 4]
list4 = ['football', 1, 2, 'soccer', False, 3.14159] # 서로 다른 자료형 사용 가능
# 인덱스 접근 가능
print(list4[0])
>>> football
원소를 가지지 않은 빈 리스트를 선언할 수도 있고, 서로 다르거나 같은 타입의 자료형을 원소로 가지도록 선언할 수도 있다. 또한 순서를 가지는 자료형이기 때문에 list4[0]
처럼 인덱스로 접근이 가능하다. 또한 리스트 타입은 slicing으로 특정한 range의 원소들만 접근할 수도 있다. slicing은 다음과 같은 문법을 따른다. 이때 start_index는 범위에 포함되지만 end_index는 범위에 포함되지 않는다.
# slicing 문법
list_name[start_index : end_index : step]
# 또는 step 생략(생략시 자동으로 1로 설정)
list_name[start_index : end_index]
# 예시
list = [0, 1, 2, 3, 4, 5]
print(list[2:4])
>>> [2, 3]
tuple : 튜플
튜플 자료형은 순서와 중복은 지원하지만, 수정과 삭제는 지원하지 않는 자료형으로, ( )
괄호를 사용한다. 즉, 보안적 이슈 등의 이유로 절대 변경되면 안 되는 중요한 값을 불변으로 유지하고 싶을 때 사용한다. list와 마찬가지로 다양한 데이터 타입을 함께 사용해도 된다.
# 빈 tuple 선언
tuple1 = ()
tuple2 = tuple()
# 원소가 있는 tuple 선언
tuple3 = (1,) # 원소가 하나일 때는 끝이 , 로 끝나야 튜플로 인식한다.
tuple4 = (1, 2, 3, 4)
tuple5 = ('football', 1, 2, 'soccer', False, 3.14159) # 서로 다른 자료형 사용 가능
한 가지 중요한 점은 튜플 내부에 원소가 하나만 있을 경우에는 끝에 ,
를 반드시 추가해야 한다는 것이다. 그렇지 않을 경우, 괄호 안에 있는 원소의 타입으로 인식된다. 즉, tuple3 = (1)
이라고 할 경우, tuple3
은 정수 타입이 된다.
만약에 튜플의 값을 변경하고 싶다면 먼저 list 타입으로 변환한 다음 수정해야 한다.
tuple = (1, 2, 3)
tuple = list(tuple)
tuple[0] = 100
print(tuple[0])
>>> 100
set : 집합
집합 자료형은 순서를 가지지 않고, 중복도 허용하지 않는 자료형이다.
# 빈 set 선언
set1 = {}
set2 = set()
# 원소가 있는 set 선언
set3 = set([1, 2, 3, 4, 4, 4]) # 중복된 데이터는 자동으로 삭제
set4 = {'a', 'b', 'c', 'd'}
set5 = {1, 'football', (1, 2, 3), 3.14159} # 서로 다른 자료형 저장 가능
만약 집합에 중복되는 데이터를 집어넣게 되면, 해당 데이터는 한 개만 남겨놓고 중복은 자동으로 삭제된다. 또한 순서를 가지지 않기 때문에 set4 = {'a', 'b', 'c', 'd'}
라고 선언해도 해당 순서대로 저장되는 것이 아니다. print(set4)
로 값을 프린트해보면, {'b', 'd', 'c', 'a'}
처럼 랜덤으로 순서가 정해진다는 것을 알 수 있다.
set는 순서가 있는 자료형과는 달리 인덱스로 접근이 불가능하다. 따라서 원소를 찾고 싶다면 in
키워드를 사용해야 한다.
set = {1, 2, 3, 4}
if 1 in set:
print("found 1")
>>> found 1
dict : 사전
사전 자료형은 순서가 없고 키 중복을 허용하지 않지만, 데이터의 수정이나 삭제는 가능한 자료형으로, { }
괄호를 사용한다.
# 빈 dict 선언
dict1 = {}
dict2 = dict()
# 원소가 있는 dict 선언
dict3 = {'name': 'Kim', 'phone': '01012345678', 'birth': '840102'}
dict4 = dict(name='Kim', phone='01012345678', birth='840102')
# 가독성을 위해 줄 띄어쓰기
dict5 = {
'name': 'Kim',
'phone': '01012345678',
'birth': '840102'
}
print(dict5['name'])
>>> Kim
딕셔너리를 선언할 때 key : value
식으로 item을 선언할 수 있지만, key=value
의 형식으로 item을 사용할 수도 있다. 또한 가독성을 위해서 각 item간 줄 띄어쓰기를 사용할 수 있다. value를 찾고 싶을 때는 dict_name[key_name] 처럼 찾을 수 있다.
또한 get()
또는 update()
메서드를 사용해서 값을 가져오거나 새로 추가할 수 있다.
dict.get('key')
dict.update({'key': value})
function : 함수
파이썬에서는 함수도 독자적인 자료형을 가지는데, 이를 function 타입이라고 한다.
def fun():
return 0
print(type(fun))
>>> <class 'function'>
'🖥️Languages > 🐍Python' 카테고리의 다른 글
[파이썬] config.ini 파일과 configparser를 통해 환경 변수 관리하기 (0) | 2023.12.25 |
---|