변수와 식별자
오른쪽의 값을 왼쪽에 할당한다
- =
- 할당 연산자
- 데이터를 저장하기 위해서 사용
- 변수 사용하면 복잡한 값들을 쉽게 사용할 수 있음(추상화)
- 동일 변수에 다른 데이터를 언제든 할당 할 수 있기 때문에 변수라고 불림
- 변수와 반대되는 것은 상수 (한번 정하면 절대 변하지 않는 값)
추상화(변수를 사용해야 하는 이유)
- 코드 가독성 증가
- 숫자를 의미 단위로 작성 가능
- 코드 수정이 용이
변수의 할당
- 같은 값을 동시에 할당할 수 있음
- a = b = 2000
- 다른 값을 동시에 할당할 수 있음
- a, b = 2000, 3000
중요한 것
- 임시 변수 활용
변수의 이름을 식별자(변수, 함수, 클래스 ...)
- 읽기 쉽고 이해하기 쉬운 변수명이 최고
- 변수 이름 규칙
- 영문 알파벳, 언더스코어, 숫자로 구성
- 첫 글자에 숫자가 올 수 없음
- 길이 제한 없고, 대소문자 구별
- 어떤 키워드는 예약어로 사용할 수 없음
- 파이썬이 이미 쓰고 있는 단어들
- 내장 함수나 모듈 등의 이름도 사용하지 않아야 한다
- 동작 예상할 수 없게 임의로 값을 할당하게 되므로 범용적이지 않은 코드가 됨
주석 다는 습관
- 코드에 대한 쉬운 이해
- 유지보수 용이
- 협업 용이
연산자
- 산술 연산자(Arithmetic Operator)
- / 나눗셈
- // 몫
- % 나머지
자료형이 왜 필요할까?
자료형과 메모리
- 하드디스크 ssd보다 램이 훨씬 빠르다
- CPU라는 연산장치는 컴퓨터의 브레인
- 10이 들어갈 공간을 메모리에 만든다
- 각각의 공간에 주소값을 넣는다
- 10이라는 데이터를 해당 주소로 찾아가서 저장한다
- 10이 필요해지면 해당 주소로 가서 읽어온다
- 주소값을 기억하기가 어렵다
- 그래서 변수를 사용
- 주소값에 대한 별명
- 변수를 쓰는 순간
- 변수와 주소값을 매핑하는 과정이 내부적으로 이루어진다
프로그래밍에서 변수는 메모리의 주소를 기억하는 이름이다`
- 데이터 기억, 할당받는 것
자료형마다 차지하는 메모리의 크기가 다르다
id()
- id(변수명): 주소값이 나온다
자료형 분류
- 수치형
- 진수 표현 가능
- 2진수: 0b
- 8진수: 0o
- 16진수: 0x
- 실수 자료형(float)
- 유리수와 무리수를 포함하는 '실수'를 다루는 자료형
- 0.1, 100.0, -0.003
- 정수를 이진수로 변환하는 건 쉽다, 하지만 소수라면?
실수 연산시 주의할 점 (부동 소수점)
- 실수는 끝이 없다, 2진수로 표현하면 무한대로 반복 > 메모리 낭비가 심하다
- 값 비교하는 과정에서 정수가 아닌 실수면 주의할 것
- 매우 작은 수보다 작은지를 확인하거나 math 모듈 활용
- 문자열 자료형
- 작은 따옴표나 큰 따옴표
- 하나의 소스코드 내에서 하나의 문장부호를 선택하여 유지하도록 함
Escape Sequence
- 문자 안에서 컴퓨터를 제어하고 싶어서 만든 것
- 역슬래시 뒤에 특정 문자가 와서 특수한 기능을 하는 문자 조합 (제어 시퀀스)
- 특정 문자가 기능을 한다
- \n
- 줄 바꿈 (엔터)
- 그냥 문자열에 역슬래쉬 넣고 싶으면 역슬래쉬 두 개 쓰면 된다
- \r
- 캐리지 리턴
- aaaaa\rbbb
- bbbaa
- 캐리지 리턴 뒤에 있는 문자가 앞의 문자 앞에서부터 채움 (해봐야 안다)
문자열 연산
- 덧셈 가능
- 곱셈 가능
String Interpolation (문자열을 변수를 활용해 만드는 법)
- f-string
- print(f'Hello, {name}!')
None
- 파이썬 자료형 중 하나
- 나중에 변수를 할당해놓기 위해서
- 값이 없음을 표현하기 위해 존재
- 어떤 것도 반환하지 않을 때 사용
불린형
- 논리 자료형
- 참과 거짓을 표현
- 비교 / 논리 연산에서 활용
is
- object(객체) 자체를 비교 (주소값이 같은지 아닌지 비교)
==
- 변수의 value (값)을 비교
>>> a = []
>>> b = []
>>> c = a # c에게 a의 주솟값을 준 것
>>> >>> result = (a is b)
>>> print(result)
False
>>> result = (a is c)
>>> print(result)
True
>>> result = (b is c)
>>> print(result)
빈 리스트는 불린형으로 False
0도 False
논리 연산자
- Not
- 부정 연산자
- True를 False로
- False를 True로
```
result = True
if not result:
print('회원 인증을 해주세요')
```
Falsy: False는 아니지만 취급되는 값
- 0, 0.0, 9), []
컨테이너
- 여러 개의 값을 담을 수 있는 것
- 서로 다른 자료형을 저장할 수 있음
- List
- 인덱스와 정렬은 다르다
- 인덱스는 단지 순서
- 정렬과 개념이 다름
리스트
- 순서가 있는 구조로 저장
- 0부터 순서는 인덱스를 의미할 뿐이지 값의 정렬은 아니다
튜플
- 불변 자료형
- 값의 변경이 불가능!
- 대괄호가 아니라 소괄호로 빈 튜플을 생성
- 생성자로 튜플 생성도 가능
- 단일 항목의 경우
- 생성 시 값 뒤에 쉼표 붙여야 함
- 복수 항목의 경우
- 마지막 항목에 붙은 쉼표는 없어도 되지만, 넣는 것을 권장
- 쉼표만 보고 튜플로 인지가 가능
어떤 자료형을 언제 써야 하나?
1. 개발자의 선택
2. 문제의 성격에 따라 다르다
3. list는 다양한 자료담고 언제든지 로직으로 값을 변경하고자 할 때
tuple은 값을 실수로라도 변경하면 안될 때
목적성을 가지고 선택과 사용
Range의 정의
- 숫자의 시퀀스
- 기본형
- range(n)
- 0부터 n-1 까지의 숫자의 시퀀스
- 범위 지정
- range(n, m)
- n부터 m-1까지의 숫자의 시퀀스
슬라이싱 연산자
- 시퀀스를 특정 단위로 슬라이싱
- 인덱스와 콜론을 사용하여 문자열의 특정 부분만 잘라내기
- 콜론 기준 앞 인덱스에 해당하는 문자는 포함, 뒤 인덱스에 해당하는 문자는 미포함
딕셔너리의 정의
- 키-값 쌍으로 이뤄진 자료형
- 꼭 1대 1
- 키는 중복으로 가질 수 없다
- 거의 모든 응답값이 JSON 으로 주고받아지고 있다
- 키
- 변경 불가능한 데이터
- 키의 값
- 어떤 형태든 관계 없음
- 중괄호 혹은 dict()을 통해 생성
형 변환
- 데이터 형태는 서로 변환할 수 있음
- 암시적 형 변환
- 사용자가 의도하지 않고 파이썬 내부적으로 자료형 변환
- 명시적 형 변환
다른 값을 할당하면
- 참조하는 메모리 주소가 바뀐다