ML/AI/SW Developer

Precourse 파이썬 기초~다지기

1. 파이썬 기초

강의자료만 한번 읽어보고, 기초적인 문법이라 skip!

2. 파이썬 다지기

2.1 Python object orientation programming
1. 객체란? 실생활에서 일종의 물체, 속성과 행동을 가진다. -> 변수와 함수로 표현
2. 클래스? 설계도
   인스턴스? 설계도로 만든 실제 구현체
3. 이름짓기
   * 클래스명: CamelCase (E.g. PersonName)
   * 함수/변수명: Snake_case (person_name)
4. 특수한 예약함수
   * '__str__' => print 
   * '__add__' => add
5. ['__'와 '@property'] 사용  
# 클래스
class Person(object):
    # 속성(변수)
    def __init__(self, name, addr, age, sex):
        self.name = name
        self.addr = addr
        self.age = age
        self.sex = sex
        self.__items # 외부에서 접근 불가

        @property # 내부에서는 접근 가능하게, 함수를 변수명처럼!
        def items(self):
            return self.__items

    # 행동(함수/메소드)
    # 사람이 이사를 갔다!
    def change_addr(self, new_addr):
        self.addr = new_addr
    
    # 사람이 개명을 했다!
    def change_name(self, name):
        self.name = name

    # Print 처럼 작용
    def __str__(self):
        return "My name is %s" % (self.name)
    
    def __add__(self, other):
        return self.age + other.age

# 설계도 기반으로 만들어진 인스턴스!
person_A = Person("홍길동", "서울", 20, "남자")
person_B = Person("동길홍", "부산", 30, "남자")

print(person_A) # My name is 홍길동
print(person_A + person_B) # 50
2.2 Moduel and Project
# 1. Readability를 위해 별칭(Aliases) 사용
import Person as p # 별칭 (Aliases)
2.3 File / Exception / Log Handling
# 1. pathlib 모듈: path를 객체로 다룸
import pathlib

path = pathlib.Path.cwd() # workspace
path.parents # ../
# 2. OS 모듈
import OS

OS.mkdir(<path>) # 디렉토리 생성
OS.path.exists(<path>) # 디렉토리/파일이 존재하는지 check
# 3. pickle 모듈: 객체를 저장, 불러오기 가능
# 4. logging 모듈: 개발 로그 관리 가능
#    * DEBUG > INFO > WARNING > ERROR > CRITICAL
# 5. configparser, argparser
import logging

logger = logging.getLogger("main")
stream_hander = logging.StreamHandler()
logger.addHandler(stream_hander)

logger.setLevel(logging.DEBUG / logging.CRITICAL)
logger.debug("Something wrong")