언어/PYTHON

데이터 타입

빨대도둑 2022. 10. 10. 18:50

컴퓨터의 모든 동작은 비트 시퀀스를 통해 이루어진다. 컴퓨터는 다양한 크기와 타입 또는 컴퓨터 코드 자체로 원하는 방식으로 비트를 해석할 수 있다. 우리는 파이썬을 사용하여 목적에 맞게 비트 덩어리를 정의하여 CPU에 명령을 내려 결과를 주고받는다. 

 

파이썬 데이터는 객체이다. 

파이썬은 각 데이터 값(불리언, 정수, 부동소수점 숫자, 문자열, 자료구조 함수 및 프로그램)을 메모리에 객체로 래핑한다.

 

<파이썬에서 객체는 다음을 포함하는 데이터 덩어리이다>

  • 타입 정의
  • 다른 객체와 구별하기 위한 고유 ID
  • 타입과 연관된 값
  • 객체의 사용빈도를 추적하는 참조 횟수

> ID는 선반 위의 위치와 같은 고유 식별자이며, 타입은 상자에 있는 스탬프와 같으며 할 수 있는 것을 명시한다. 파이썬 객체가 정수면 타입은 int이고 객체는 int에 추가될 수 있다.

 

「파이썬 기본 데이터 타입」

이름 타입 가면 여부 (y/n)
불리언 bool n ture, flase
정수 int n 1,2,3
부동소수점 float n 3.14, 1.8e4
복소수 complex n 3i, 4j+7
텍스트 문자열 str n 'herry', 'loan'
리스트 list y ["Nox", "Lumos"]
튜플 tuple n (2,3,4)
바이트 bytes n b'ab\xff'
바이트 배열 bytearray y bytearray(...)
set y set([3,4,5])
프로즌 셋 frozenset n frozenset(['elsa','winter'])
딕셔너리 dict y {'gmae': 'lol', 'brand": "riot"}

 

 

가변성 」

> 파이썬은 강타입 언어다. = 값은 병견 가능하지만 객체의 타입은 변경할 수 없다. 

가변(mutable)=타입에 따라 상자에 포함된 데이터 값을 변경할 수 있다.

불변(immutable)=타입에 따라 상자에 포함된 데이터 값을 변경할 수 없다. 불변 객체는 밀봉된 상태로 생각할 수 있다. 

 

파이썬에서는 데이터 값을 "리터럴", "변수"로 명시한다. 

> 정수는 숫자 시퀀스이고, 부동소수점 숫자는 소수점을 포함하며 텍스트 문자열은 따옴표로 묵는다. 

「변수」는 컴퓨터 언어의 핵심 개념이다. 대부분 언어와 마찬가지로 파이썬을 사용하면 프로그램에서 사용하려는 컴퓨터 메모리의 값 이름과 같은 변수를 정의할 수 있다.

 


변수의 특징

  • 소문자, 대문자, 숫자, 언더바( _ )만 사용할 수 있다, 
  • 대소 문자를 구분한다. 
  • 숫자로는 시작할 수 없지만, 언더바로는 시작할 수 있다. 
  • 언더바로 시작하는 이름은 특별 대우를 받는다.
  • 파이썬 예약어는 사용할 수 없다. > help("keyword")를 실행시키면 예약어를 찾을 수 있다.

파이썬은 = 을 사용하여 값을 할당한다 > 오른쪽 값을 왼쪽 변수에 할당 한다

x=5
y=x+9
y
  1.  x에 5를 할당한다. 
  2.  y에 x+9를 할당하는데, x에는 이미 5가 할당된 상태 > 즉 y에는 5+9의 결과 값인 14를 할당한다
  3.  y의 값은 14

※만약 y+x+9로 시작하면, 변수 x에 값이 없으므로 예외(오류) 처리된다. 

변수는 단지 이름이다. 컴퓨터 언어마다 다르며 리스트와 같은 가변 객체를 얻을 때 알아야 하는 내용이다. 할당은 값을 복사하지 않고 데이터를 포함하는 객체에 이름을 붙인다. 이름은 객체 자체가 아닌 객체에 대한 참조이다

> 파이썬은 어떤 타입이든 가리킬 수 있고, 데이터 객체 자체에 문자열을 따라서 값과 타입을 얻는다. 추가로 클래스는 객체이다. 

> 파이썬에는 가비지 컬렉터가 있다: 객체의 참조가 0이면, 아무도 가리키는 이름이 없으므로 더 이상 필요하지 않은 공간의 메모리를 재사용하는 것. (Java에도 존재)

> 이름은 객체를 가리키기 때문에 이름에 지정된 값을 변경하면 이름이 새 객체를 가리킨다. 이전 객체의 참조 수가 감소하고 새 객체의 수가 증가한다. 

> 변수가 모두 같은 가변 객체를 가리킨다면 두 이름 중 하나를 통해 객체 값을 변경할 수 있으며, 두 이름을 사용할 때 변경된 값이 사용된다. 

 


「식별자」

  • 캐멀케이스(대문자로 시작) > 클래스  ex  class Animal:
  • 스네이크 케이스(소문자로 시작) > 뒤에 괄호가 있으면 "함수"  ex: print( ), 없으면 "변수"  ex:  math.pi

 

「숫자」

  • boolean: True or False
  • 정수: 42, 1000000과 같은 숫자
  • 실수: 3.14 1592와 같이 소수점이 있는 숫자 혹은 (100000000=1.0e8)과 같은 지수

 

「boolean 불리언」

불리언 데이터 타입의 유일한 값은 True or False이다. 이 값을 직접 사용하기도 하지만, 진위 확인을 위해서 사용하기도 한다. 또한 파이썬의 특수 함수들은 데이터 타입을 모두 boolean으로 한다. 

> bool( ) 함수는 어떤 값을 인수로 취해서 불리언 값을 반환한다

bool(True)
bool(1)
bool(45)
bool(-45)

> 결과는 모두 True. 이유: 0이 아닌 값은 모두 False로 간주한다. 

bool(False)
bool(0)
bool(0.0)

> 결과는 모두 False. 이유: 0인 값은 모두 False로 간주한다. 

 

「정수」

정수 연산자

연산자 설명 결과
+ 덧셈 1 + 2 3
- 뺄셈 95 - 45 50
* 곱셈 4 * 9 36
/ 부동소수점 나누기 9 / 2 4.5
// 정수나누기(소수점 이하 버림) 9 // 2 4
% 나머지 9 % 2 1
** 지수 2 ** 3 8

※0으로 나누면 예외가 발생한다. 

 

「진수」

정수 앞에 진수를 붙이지 않으면 10진수로 간주한다. 보통 10진수 이외의 진수는 사용 빈도가 낮다. 

  • 2진수(binary): 0b or 0B
  • 8진수(octal): 0o or 0O
  • 16진수(hex): 0x or 0X

> IDE에서 리터럴 정수를 입력하면 10진수로 출력한다. 

10		//결과:10
0b10		//결과:2
0o10		//결과:8
0x10		//결과:16

> 10진수에서 다른 진수로 계산할 수 있다. 단 결과는 문자열로 반환된다. 

value=65
bin(value)	//결과:0b1000001
oct(value)	//결과:0o101
hex(value)	//결과:0x41

char(65)	//결과:'A'
ord('A')	//결과:65

 

「타입 변환」

int(True)	결과값: 1
int(False)	결과값:0

bool(1)		결과값:True
bool(0)		결과값:False

int(98.8)	결과값:98
int(1.0e4)	결과값:10000

bool(1.0)	결과값:True
bool(0.0)	결과값:False

int('99')	결과값:99
int('-23')	결과값:-23
int('1_000_000)	결과값:1000000

int('10',2) #2진수	결과값:2
int('10',8) #8진수	결과값:8
int('10',16)#16진수	결과값:16
int('10',22)#22진수	결과값:22

4+9.2	결과값:13.2

>  int의 크기는 cpu에 따라 32 bit or 64bit로 제한된다. 

> 32bit는 -2,147,483,648~2,147,483,647까지이다. 

> long은 더 많은 공간을 제공한다. 64bit에서 -9,223,372,036,854,775,808~9,223,372,036,854,775,807까지 이다.               ("python3"에서는 long이 사라지고 int의 크기가 유연해졌다. )

> 만약 컴퓨터가 허용한 공간보다 더 많은 공간을 차지한다면 정수 오버플로(overflow)가 발생한다. 

 

'언어 > PYTHON' 카테고리의 다른 글

함수, 예외  (0) 2022.10.17
딕셔너리와 셋  (0) 2022.10.14
튜플, 리스트  (1) 2022.10.13
텍스트 문자열  (0) 2022.10.12
조건, 반복  (0) 2022.10.12