컴퓨터 시스템을 구성하는 물리적인 장치들. 입력장치, 컴퓨터 본체, 출력장치로 구분.
컴퓨터가 해야 할 모든 계산과 명령을 처리하는 장치.
메모리(RAM)에 있는 데이터를 가져와서 처리하고, 처리 결과를 다시 메모리에 저장한다.
컴퓨터가 작업을 할 때 필요한 데이터를 임시로 저장하고, 그 데이터를 빠르게 불러올 수 있도록 도와준다.
프로그램을 실행할 때, CPU가 바로 데이터를 처리할 수 있도록 프로그램의 일부 데이터를 RAM에 저장해 둔다.
원래는 그래픽 연산에 특화된 장치였지만, 대량의 데이터 연산을 병렬로 수행하는 데 매우 효율적이기 때문에 병렬 계산이 필요한 작업에 많이 사용된다.
수천 개의 작은 코어로 구성되어 있으며, 각각의 코어가 단순한 계산을 동시에 병렬로 수행한다.
프로그램 실행
하드디스크에 저장된 프로그램의 데이터가 먼저 RAM으로 옮겨진다. → CPU가 빠르게 처리할 수 있도록 데이터를 준비하는 단계.
데이터 처리
프로그램이 실행되는 동안 CPU는 필요한 데이터를 RAM에서 가져와 처리한다. 이 데이터는 매우 빠르게 처리되며, 다시 RAM에 저장될 수도 있다.
종료 시
프로그램을 종료하거나 컴퓨터를 끄면 RAM에 있던 데이터는 사라지고, 다시 저장장치에 저장되지 않으면 영구적으로 사라진다.
프로그래밍에서 데이터를 저장하고 관리하는 데 사용.
변수 : 이름이 붙은 메모리 공간, 값을 저장하거나 참조할 때 사용.
파이썬에서 변수 선언 → 변수는 값이 저장된 메모리 위치를 가리키는 역할을 한다.
name='김사과'
age=20
print(name)
print(age)
name = '반하나'
print(name)
a=200
b=200
print(a)
print(b)
print(a is b)
print(id(a))
print(id(b))
김사과
20
반하나
200
200
True
132061020854736
132061020854736
동일한 값을 가진 불변 객체가 여러 곳에서 사용될 때, 새로운 객체를 만들지 않고 기존 객체를 재사용하는 방식이다. → 메모리 사용 최적화
num1=10
num2=3
print('%d / %d = %4.2f'% (num1, num2, num1/num2))
name = 'banana'
age = 25
score = 160.123
print(f'이름:{name},나이:{age},점수:{score:.1f}점')
10 / 3 = 3.33
이름:banana,나이:25,점수:160.1점
파이썬 자료형(Data Type) : 변수에 저장할 수 있는 값의 종류 정의.
각 자료형은 특정한 특성과 동작 방식을 가지고 있다.
name = '김사과'
age = 20
weight = 50.5
isLover = False
print(name)
print(age)
print(weight)
print(isLover)
김사과
20
50.5
False
#type(): 파이썬에서 객체의 타입(클래스)을 확인
print(type(name)) # 문자열
print(type(age)) # 정수
print(type(weight)) # 실수
print(type(isLover)) # 참, 거짓
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
my_list = {1,2,3}
print(type(my_list))
my_tuple = (1,2,3)
print(type(my_tuple))
my_dict = {'key':'value'}
print(type(my_dict))
my_set = {1,2,3}
print(type(my_set))
<class 'set'>
<class 'tuple'>
<class 'dict'>
<class 'set'>
형 변환(Type Casting): 서로 다른 자료형 간에 변환할 수 있다.
# 정수형 > 실수형
a = 10 # 정수형
b = float(a)
print(b)
10.0
# 실수형 > 정수형
c = 3.14
d = int(c)
print(d)
3
# 문자형 > 정수형, 실수형
e = '100'
f = int(e)
g = float(e)
print(f)
print(g)
100
100.0
# 정수형, 실수형 > 문자형
h = 42
i = str(h)
j = 3.14
k = str(j)
print(i)
print(k)
42
3.14
→ 위 실행은 숫자처럼 보이지만, 사실 문자형으로 변환된 결과값이다.
변수를 삭제하기 위해 del 문을 사용할 수 있다.
del 문 : 지정된 변수 제거, 해당 메모리 공간 해제.
변수가 삭제되면 해당 이름으로 변수에 더 이상 접근할 수 없다.
isLover = False
print(isLover)
del isLover
print(isLover)
False
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-24-41c9b6802752> in <cell line: 4>()
2 print(isLover)
3 del isLover
----> 4 print(isLover)
NameError: name 'isLover' is not defined
→ del 연산자를 통해 isLover 값이 사라졌기 때문에 print를 하면 에러가 뜬다.
name1 = '김사과'
name2 = name1
del name1
print(name2)
김사과
→ name2에 name1 값을 넣는다. 그리고 값이 없는 name1 변수를 삭제한다. name2에는 name1에 있던 '김사과' 값이 들어있기에 print하면 '김사과' 출력~!
파이썬은 메모리 관리를 위해 참조 카운팅(reference counting) 메커니즘을 사용한다.
객체의 참조 카운트가 0이 되면 해당 객체는 더 이상 사용되지 않으며, 가비지 컬렉션에 의해 메모리에서 해제된다.
가비지 컬렉션은 주기적으로 실행되며 더 이상 사용되지 않는 객체를 메모리에서 해제하여 자동으로 메모리를 관리한다.
한 번 생성되면 값을 변경할 수 없는 객체. 변경하려고 하면 새로운 객체가 생성된다.
int (정수형)
float (실수형)
str (문자열)
bool (불리언)
tuple (튜플)
x = 10
print(id(x)) # 객체 고유 번호 (메모리 주소)
x = x + 1
print(id(x)) # 다른 객체 → 새로 만들어짐