본문 바로가기
Python

데이터 타입

by Salgoo26 2021. 7. 24.

기본 데이터 타입

- 숫자 (Number)

    - int (정수, integer)

    - float (부동 소수점, 실수, floating point number)

    - complex (복소수, complex number)

- 문자열 (String)

- 참/거짓 (Boolean)

- None


숫자 (integer)

- 모든 정수의 타입은 int

    - Python3 부터는 long 타입은 없고, 모두 int로 표기됨

- 매우 큰 수를 나타낼 때 오버플로가 발생하지 않음

    - 오버플로: 데이터 타입별로 사용할 수 있는 메모리의 크기를 넘어서는 상황

    - Arbitrary precision arithmetic을 통해 고정된 형태의 메모리가 아닌 가용 메모리들을 활용하여 모든 수 표현에 활용

- 진수 표현

 

# 2진수 - 0b
0b10 => 2

# 8진수 - 0o
0o30 => 24

# 16진수 - 0x
0x0f => 15

숫자 (float)

- 정수가 아닌 모든 실수는 float 타입

- 부동소수점

- Floating point rounding error

    - 실수를 컴퓨터가 표현하는 방법 - 2진수(비트)로 숫자를 표현

    - 부동소수점에서 실수 연산 과정에서 발생 가능

    - 값 비교하는 과정에서 정수가 아닌 실수인 경우 주의해야 함

 

# 왼쪽의 계산 결과와 오른쪽의 값은 같은 값인가?
3.14 - 3.02 == 0.12

# 결과
False

# why?
3.14 - 3.02
>> 0.1200000000000

 

 

- 따라서 수를 비교할 땐 차이가 매우 작은 수보다 작은지를 확인하거나, math 모듈을 활용함

 

# 1. 임의의 작은 수
abs(a - b) <= 1e-10

# 2. system 상의 machine epsilon
import sys
print(abs(a - b) <= sys.float_info.epsilon)

# math 모듈 활용
import math
math.isclose(a, b)

숫자 - complex

- 실수부와 허수부로 구성된 복소수는 모두 complex 타입

    - 허수부를 j로 표현함

a = 3+4j
print(a.real)
print(a.imag)

-------------
# 결과 
3.0
4.0

문자열(String)

- 모든 문자는 str 타입

- 문자열은 작은 따옴표(')나 큰 따옴표(")를 활용하여 표기

    - 문자열을 묶을 때 동일한 문장부호를 활용

    - PEP8에서는 소스코드 내에서 하나의 문장부호를 선택하여 일관성을 유지하도록 함

    - 기본적으로 작은 따옴표를 사용하기로 한다!

이스케이프 시퀀스(escape sequence)

- 문자열 내에서 특정 문자나 조작을 위해 역슬래시(\)를 활용하여 구분

 

예약문자 내용(의미)
\n 줄 바꿈
\t
\r 캐리지리턴
\0 널(Null)
\\ \
\' 작은따옴표(')
\" 큰따옴표(")

String Interpolation

- 변수의 값을 문자열의 자리표시자(placeholder)로 대체하는 방법(과정)

    - % formating - 현재 버전에선 많이 사용하지 않는 방법

    - str.format()

    - f-string - 많이 사용하게 될 것!

- 사용 예시

# f-string 사용 예시

# 날짜 표시
import datetime
today = datetime.datetime.now()
print(today)

--------------------------------
# 결과
2021-06-24 15:01:21.704852

--------------------------------
print(f'오늘은 {today:%y}년 {today:%m}월 {today:%d}일')

--------------------------------------------------------
# 결과
'오늘은 21년 06월 24일'

--------------------------------------------------------
pi = 3.141592
print(f'원주율은 {pu:.3} 반지름이 2일 때 원의 넓이는 {pi*2*2}')

---------------------------------------------------------------
# 결과
`원주율은 3.14 반지름이 2일 때 원의 넓이는 12.566368`

참/거짓 (Boolean)

- True / False 값을 가진 타입은 bool

- 비교/논리 연산을 수행함에 있어 활용

- 다음은 모두 False로 반환

0, 0.0, (), [], {}, '', None

None

- 값이 없음을 표현하기 위한 타입인 NoneType

a = None
print(a)

---------
None

타입 변환

자료형 변환/타입 변환(Type conversion, Typecasting) 

- 파이썬에서 데이터 타입은 서로 변환할  수 있음

    - 암시적 타입 변환(Implicit)

        - 사용자가 의도하지 않고, 파이썬 내부적으로 타입 변환 하는 경우

    - 명시적 타입 변환(Explicit)

        - 사용자가 특정 함수를 활용하여 의도적으로 타입 변환 하는 경우

 

암시적 타입 변환

- 사용자가 의도하지 않고, 파이썬 내부적으로 타입 변환하는 경우

    - bool

    - Numbers(int, float, complex)

    - 예시

True + 3
=> 4

3 + 5.0
=> 8.0

3 + 4j + 5
=> (8+4j)

명시적 타입 변환

- int()

    - str, float => int

- float()

    - str, int => float

- str()

- 단, 형식에 맞는 문자열만 변환 가능하다!

- 예시

# 문자열은 암시적 타입 변환이 되지 않음
'3' + 4

>> Error!!

# 정수 형식이 아닌 경우 타입 변환 불가
int('3.5') + 5

>> ValueError

'Python' 카테고리의 다른 글

표현식과 문장  (0) 2021.07.24
연산자  (0) 2021.07.24
변수와 식별자  (0) 2021.07.24
에러와 예외처리  (0) 2021.07.21
재귀 함수  (0) 2021.07.21

댓글