부스트캠프 AI Tech 1기 [T1209 최보미]/U stage

Day4 학습정리 - 파이썬 기초 문법 III

B1001101 2021. 1. 21. 21:10

강의 복습

1. Python Object-Oriented Programming

더보기

1) 객체지향 프로그래밍 개요

  • Object-Oriented Programming(OOP)
  • 객체: 속성(Attribute), 행동(Action) 가짐
  • OOP에서 속성: 변수(variable), 행동: 함수(method)
  • 클래스(class): 설계도, 인스턴스(instance): 실제 구현체

2) 파이썬 클래스

  • 클래스 선언: class 클래스이름(상속받는 객체) ex) class SoccerPlayer(object):
  • object는 python3에서 자동 상속
  • Python naming rule
    • snake_case: 띄어쓰기 부분에 "_" 추가, 함수/변수명에 사용
    • CamelCase: 띄어쓰기 부분에 대문자, Class명에 사용
  • Attribute 추가
    • __init__: 객체 초기화 예약 함수
    • 파이썬에서 "_" : 특수한 예약 함수나 변수, 함수명 변경(맨글링)으로 사용
  • method 구현: 기존 함수와 같으나 self를 추가해야 class 함수로 인정됨
    • self: 생성된 인스턴스 자신을 의미

3) 객체지향 언어의 특징

  • Inheritatnce(상속): 부모 클래스로부터 속성과 메소드를 물려받은 자식 클래스를 생성
  • Polymorphism(다형성): 같은 이름 메소드의 내부 로직을 다르게 작성
  • Visibility(가시성): 객체의 정보를 볼 수 있는 레벨을 조절
    • Encapsulation: 캡슐화 또는 정보 은닉, 클래스 간 간섭/정보공유의 최소화

4) Decorate

  • First-class objects(일등함수/일등객체)
    • 변수나 데이터 구조에 할당 가능한 객체
    • 파라메터로 전달 가능 + 리턴 값으로 사용
    • 파이썬의 함수는 일급함수
  • Inner function: 함수 내에 또 다른 함수가 존재
  • closures: inner function을 return값으로 반환
  • decorator function: 복잡한 클로져 함수를 간단하게

2. Module and Project

더보기

1) 모듈

  • 어떤 대상의 부분 혹은 조각
  • 작은 프로그램 조각들, 모듈들을 모아서 하나의 큰 프로그램을 개발
  • 프로그램을 모듈화시키면 다른 프로그램이 사용하기 쉬움
  • 파이썬의 모듈: py 파일을 의미
  • import 문을 사용해서 호출
  • from과 import 키워드를 사용하여 필요한 내용만 골라 호출할 수 있음
  • Built-in Module: 파이썬이 기본 제공하는 라이브러리, 바로 import문으로 활용 가능

2) 패키지

  •  모듈을 모아놓은 단위, 하나의 프로그램
  • 하나의 대형 프로젝트를 만드는 코드의 묶음
  • 다양한 모듈들의 합, 폴더로 연결됨
  • __init__, __main__ 등 키워드 파일명이 사용됨
  • Package 만들기
    • 기능들을 세부적으로 나눠 폴더로 만듦
    • 각 폴더별로 필요한 모듈을 구현함
    • python shell에서 1차 테스트
    • 폴더별로 __init__.py 구성 (import와 __all__keyword 사용)
    • __main__.py 파일 만들기
    • 실행하기: 패키지 이름만으로 호출
  • package namespace
    • 절대참조
    • . : 현재 디렉토리 기준
    • .. : 부모 디렉토리 기준

3) 가상환경(Virtual Environment) 설정

  • 프로젝트 진행 시 필요한 패키지만 설치하는 환경
  • 기본 인터프리터 + 프로젝트 종류별 패키지 설치
  • 다양한 패키지 관리 도구를 사용
  • 대표적인 도구
    • vertualenv + pip: 가장 대표적인 가상환경 관리 도구, 레퍼런스 + 패키지 개수
    • conda: 상용 가상환경도구, miniconda 기본 도구, 설치 용이, Windows에서 장점
  • conda 가상환경
    • 가상환경 새로 만들기: conda create -n 가상환경이름 python=3.8
    • 가상환경 호출: conda activate 가상환경이름
    • 가상환경 해제: conda deactivate
    • 패키지 설치: conda install 패키지명
  • Windows에서는 conda, linux/mac에서는 conda or pip
  • conda 가상환경 예시: matplotlib(대표적인 파이썬 그래프 관리 패키지)

피어세션

오늘 피어세션에서는 다양한 iteration 방식들의 실행 시간과 메모리를 비교하는 내용으로 발표했다. 시간이 없어서 준비가 많이 부족했는데 나중에 기회가 되면 다시 조사해봐야겠다.

Iteration.pdf
1.22MB


코멘트

오늘은 객체지향 프로그래밍과 모듈에 대해 배웠다. 클로저와 데코레이터라는 개념을 오늘 처음 알았는데 아직 어떤 경우에 쓰는지 잘 이해하지 못해서 좀 더 알아봐야 할 것 같다. 객체지향 프로그래밍은 정말 중요한 개념이기 때문에 오늘 강의를 잘 복습해야겠다. 가상환경 실행하는 방법도 잘 익혀두면 좋을 것 같다.