[머신러닝을 위한 파이썬 한 조각] - CH.2 파이썬 (Python)

CH.2 파이썬 (Python)
- 파이썬 데이터 타입
- 리스트
- 양수 인덱스와 음수 인덱스(역순) 존재

- 슬라이싱
- 빈 리스트 생성 후 append로 원소 추가 가능
- 튜플
- 리스트와 유사하지만 ()을 사용하고 원소를 변경할 수 없음
- 딕셔너리
- 입력한 순서대로 데이터가 들어가는 것이 아니므로 주의
- score.keys(), score.values(), score.items()로 값을 얻을 수 있음
- string
- split(): 문자열을 분리하여 list로 반환

- Useful function
- type(): 입력 data의 데이터타입을 알려주는 함수
- len(): 데이터의 길이를 알려주는 함수
- size(): 모든 원소의 개수를 알려주는 함수
- list(): 입력 data를 리스트로 만들어 리턴하는 함수
- str(): 입력되는 data를 문자열로 변환하여 리턴하는 함수
- int(): 문자열 형태의 숫자를 정수 형태로 리턴하는 함수
- 조건문
- 반복문
- list comprehension: 리스트의 [] 안에 for 루프를 사용하여 반복적으로 표현식을 실행
- 함수
- 한 개 이상의 return 값 반환 가능
- default parameter: 함수의 입력 파라미터에 기본 값을 지정하는 것으로 파라미터에 명시적인 값이 전달되지 않으면 기본값을 사용
- mutable parameter: 입력 파라미터로 들어간 변수의 원본 값을 함수 내에서 바꿀 수 있는 것
- list, dictionary, numpy 등
- immutable parameter: 입력 파라미터로 들어간 변수의 원본 값이 함수 내에서 바뀌지 않는 데이터 타입
- lambda 함수
- 함수를 만들 때 def를 사용하지 않고 한 줄 형태로 함수를 작성하는 것
- 머신러닝에서 수치 미분과 활성화 함수 등을 수학의 f(x), f(x,y)로 나타낼 때 사용
f = lambda x : x+100
- 클래스

- def init 필수, 생성자 역할을 수행하고 인스턴스가 만들어 질 때 한번만 호출됨
- 클래스 메서드의 첫번째 파라미터로 ‘자신의 인스턴스'를 나타내는 self를 반드시 기술해야함
- class 변수: 메서드 밖에 존재하는 변수, 초기화를 시켜주는 변수, 해당 클래스로 생성된 모든 인스턴스가 공통으로 사용하는 변수

- Person class로 생성된 모든 instance(obj1, obj2)는 count = 0을 공유함
- 인스턴스 변수: 각 객체 인스턴스마다 별도로 존재, 메서드 안에서 사용되면서 “self.변수명"처럼 사용됨
- 정적 메서드: self 파라미터를 갖기 않고 인스턴스 변수에 엑세스 할 수 없음, 객체 필드와 독립적이지만 로직상 클래스네에 포함되는 메서드에 사용됨, @staticmethod로 표시
- class method: 메서드 앞에 @classmethod를 표시하고, self대신 cls를 파라미터로 받음
- 인스턴스 데이터를 액세스 할 필요가 없는 경우에, 클래스 변수를 액세스할 필요가 있을 때는 클래스 메서드를, 이를 액세스할 필요가 없을 때는 정적 메서드를 사용함

- private 메서드, 변수: __로 시작하면 private으로, 외부에서 직접 접근이 불가능함

- 외부함수와 class method name이 같은 경우, self를 붙이지 않으면 동일한 이름의 외부 함수 호출됨

- exception
- try… except 문을 사용, try 블록에서 에러 발생 시 except 문으로 이동하여 예외 처리 수행
- exception을 무시하려면 pass문을 사용하거나 개발자가 에러를 던지기 위해 raise문을 사용
- try 문은 finally문을 가질 수 있고, try블럭이 정상적으로 실행되든 에러가 발생하든 항상 마지막에 실행됨

- with 구문
- 파일이나 세션을 사용하고 자동으로 리소스를 close시켜줌
