4.1 None- 값이 존재하지 않음을 표현
- 존재하지 않음을 표시
- java, c 의 null과 같음
1. 조건식에서의 None이용
- None은 거짓에 해당
- 언제 어디서 참조되더라도 동일한 하나의 객체를 반환하는 싱글톤
- is, is not을 사용하여 비교
4.2 논리값 - 참/거짓을 다룸
1. bool 타임 - 논리값을 다루는 타입
- True, False의 두가지 내장 상수만 존재
- 모든객체에 대해 논리값 판정가능
2. 불연산
1) x or y - x가 참이면 x, 그렇지 않으면 y를 반환
2) x and y - x가 참이면 y, 그렇지 않으면 x를 반환
3) not x - x가 참이면 False, 그렇지 않으면 True를 반환
- 반환값은 True/False
- or/and보다 우선도가 높다.
4.3 숫자값
- 내장 숫잣값 타입
- 정수: int
- 부동소수점수 : float
- 복소수: compex
1. 숫자값끼리의 연산
- 숫잣값 타입은 변경할 수 없는 타입이므로 연산 결과는 항상 새로운 객체로 반환
- 그 외 연산
- 기타 수학함수는 math모듈을 사용
2. 숫잣값을 다루는 내장타입
- 큰수표현시 언더스코어로 보기 쉽게 쓸 수 있다.
- 언더스코어는 숫자에 영향을 주지 않는다.
1) int 타입 - 정수를 다루는 타입
- 정수는 크기제한이 없다.
- 메모리 허용한도내 큰값을 다룰 수 있다.
2) float 타입 - 부동소수점을 다루는 타입
- 1e-1 = 0.1, 1e+2 = 100
3) complex 타입 - 복소수를 다루는 타입
- 실수부는 .real, 허수부는 .imag로 얻을 수 있다.
3. 조건식에 숫자값 이용
1) float 타입을 다룰 때 주의점
- 0은 거짓, 이외는 참
- float타입 연산 주의
- 계산기 하드웨어가 0.3을 정확하게 표현 못하는 경우 있음
4.4 문자열
1. str 타입 - 문자열을 다루는 타입
- 작은따옴표나 큰따옴표로 감싸서 정의
- \n을 이용하여 줄바꿈
- ''', """ 을 이용하여 줄바꿈 포함한 문자열 정의
2. 문자열 연산
- 를 이용하여 반복
3. for문에서의 문자열의 동작
- for를 사용하여 한문자씩 반환 (이터러블 객체)
4. 조건식에서의 문자열 이용
- 빈문자열이면 거짓, 그외에는 참
- in을 이용하여 특정 문자열 포함여부 판정
5. 문자열 안에서의 변수 이용
1) f-string - 식을 삽입할 수 있는 문자열 리터럴
- 3.6에 추가됨
- 문자열 맨앞에 f를 붙여정의
- formatted string literals
- 2.6부터 사용 가능
- str.format() 메서드에 인수로 전달한 값으로 치환
- {}에는 {0} or {key}와같이 인수전달
3) % 연산자 - 가장 오래된 문자열 포맷
- 사용안함
- 문자열: %s, 숫자값: %d
6. str 타입과 매우 비슷한 bytes 타입
1) str,encode()와 bytes.decode()를 이용한 상호 변환
- 유니코드 문자에는 문자별로 코드포인트라는 식별자가 있음
- 인코드 : 바이트코드로 변환
- 디코드 : 바이트코드를 되돌림
2) 파이썬 2계열과 파이썬 3계열에서의 문자열 차이
4.5 배열 - 엘리먼트를 1열로 나열해서 다룸
1. list 타입 - 변경할 수 있는 배열을 다루는 타입
- list()를 사용해 새로운 리스트를 만들 수 있다.
1) 엘리먼트 추가와 삭제
- 추가: list.append() / + 연산자 사용
- 삭제: list.pop() / del 사용
- del: 객체삭제
2) 인덱스를 이용한 엘리먼트로의 접근
- 변수명[인덱스]로 접근
- 음수를 넣으면 맨뒤에서 왼쪽으로 수를 센다
- 엘리먼트 수를 넘으면 indexError발생
3) 슬라이스를 이용한 리스트 추출
- 변수명[시작:종료인덱스]
- 종료인덱스 바로 앞까지 포함
- 슬라이스로 선택한부분 치환
2. tuple 타입 - 변경할 수 없는 배열을 다루는 타입
- tuple()을 사용하여 이터러블한 객체로부터 튜플생성가능
1) 튜플 작성 시 주의점
- 빈튜플 만드는법: tuple() / ()
- 콤마를 붙여 엘리먼트가 하나인 튜플 생성가능
2) 인덱스를 이용한 엘리먼트로의 접근
3) 슬라이스를 이용한 튜플 추출
4) for 문에서의 배열의 동작
3. 조건식에서 이용되는 배열의 특성
- 엘리먼트가 없으면 거짓, 하나라도 존재하면 참
- in연산자로 객체가 포함되어있는지 확인
4. 튜플과 리스트의 이용구분
- 주로 변경되지 않는 설정값 지정에 튜플이 자주 쓰임
4.6 딕셔너리 - 키와 값의 세트를 다룸
- 키와 값을 세트로 다루는 데이터타입
- 해시, 맵, 연상배열 등으로 불림
- 키를 인덱스로 이용 (빠름)
1. dict 타입 - 딕셔너리를 다루는 타입
- {}나 dict()를 사용
2. 엘리먼트 추가와 삭제
- 삽입: 새로운 키를 지정해 대입
- 삭제 : dict.pop() / del
3. 키를 이용한 엘리먼트로의 접근
- 변수명[키]로 참조
- 키가 존재하지 않는경우 keyError
4. 키로 이용할 수 있는 객체의 조건
- 문자열, 숫자값, 튜플 등 변경 할 수 없는 객체만 이용
- 리스트, 딕셔너리 불가능
5. for 문에서의 딕셔너리의 동작
- 키를 하나씩 추출
- 목록만 필요할경어 dict.values()이용
6. 조건식에서 이용할 수 있는 딕셔너리의 특성
- 엘리먼트가 없으면 거짓, 하나라도 있으면 참
4.7 집합 - 유일한 엘리먼트의 집합을 다룸
1. set 타입 - 변경할 수 있는 집합을 다루는 타입
- 변경할 수 있는 객체
- 유일한 값만 있음
- set()으로 객체 생성
1) 엘리먼트 추가와 삭제
- 추가: set.add()
- 제거: set.remove('item'), set.pop()
- 순서를 유지하지 않으므로 set.pop() 사용시 제거되는 엘리먼트 확정 불가
2. frozenset 타입 - 변경할 수 없는 집합을 다루는 타입
- set 타입과 같으나 변경할 수 없는타입
- frozenset()
3. 집합 연산 - 합집합, 교집합, 차집합, 대칭차집합
- 순서가 존재하지 않는다.
4. for 문에서의 집합의 동작
- set, frozenset, 집합은 순서가 존재하지 않는다.
5. 조건식에서 이용할 수 있는 집합의 특성
- list와 같음
- 비어있으면 거짓
- in 연산자로 포함여부 확인
4.8 컴프리헨션 - 효율적인 시퀀스 생성
1. 리스트 컴프리헨션 - 효율적인 리스트 생성
- 변수의 스코프는 컴프리헨션안으로 제한된다.
1) 중첩되 리스트 컴프리헨션
- 얕은 중첩일때 가독성있게 사용가능
2) if 문이 있는 컴프리헨션
2. 기타 컴프리헨션
- [] 를 {}로바꾸면 set타입 컴프리헨션
- () 로 바꾸면 제너레이터
4.9 그 외 타입을 나타내는 개념
1. 가변객체 - 정의 후 값을 변경할 수 있는 객체
- mutable object
- list, dict, set etc
2. 불변객체 - 정의 후 값을 변경할 수 없는 객체
- immutable object
- int, float, str, tuple, frozenset etc
3. 컨테이너 객체 - 다른 객체에 대한 참조를 가진 객체
- list, dic, 집합 etc
- 다른객체에 대한 참조를 가진 객체
- for, len, in 등 사용가능
- sequence object
- index를 이용해 엘리먼트 접근가능 객체
- str, list, tuple
- mapping object
4. 이터러블 객체 - for문에서 이용할 수 있는 객체
5. 호출 가능 객체 - ()를 붙여 호출할 수 있는 객체