AI교육과정 - Python.4

단비·2023년 1월 17일
0

AI교육과정

목록 보기
56/69
  • 스페셜 메소드(Special Method)
    • _로 시작해서 _ 로 끝나는 특수함수
    • 해당 메소드를 재구현하면 객체에 여러가지 파이썬 내장 함수나 연산자에 원하는 기능을 부여할 수 있음
    1. str() 오버라이딩

      def __str__(self):
          return '{},{}'.format(self.x, self.y)
      
      p1 = Point(3, 4)
      print(str(p1)) # 3,4
      • 연산자 오버라이딩
      def __add__(self, pt):
          new_x = self.x + pt.x
          new_y = self.y + pt.y
          return Point(new_x, new_y)
      
      p1 = Point(3, 4)
      p2 = Point(5, 8)
      p3 = p1 + p2 # 8,12
      • 연산자 오버라이딩
      def __sub__(self, pt):
          new_x = self.x - pt.x
          new_y = self.y - pt.y
          return Point(new_x, new_y)
      • 연산자 오버라이딩
      def __mul__(self, pt):
          new_x = self.x * pt.x
          new_y = self.y * pt.y
          return Point(new_x, new_y)
    2. len() 오버라이딩

      def __len__(self):
          return self.x + self.y
    3. 인덱싱 오버라이딩

      def __getitem__(self, index): # 인덱싱 오버라이딩 -> p4[0]
      		if index == 0:
      	      return self.x
          elif index == 1:
      	      return self.y
          else:
      	      return -1
      
      p4 = Point(10, 3)
      print(p4[0]) # 10
      print(p4[1]) # 3
      print(p4[10]) # -1
  • 오류처리
    • 오류가 발생되었을 때 별도의 처리를 하거나 무시하고 프로그램을 실행하는 것

    • 오류가 발생될 것으로 예상되는 문자열을 try 블록에 코딩하고, try 블록에 코딩된 내용을 실행하다가 오류가 발생하면 더이상 try 블록의 내용을 실행하지 않고 해당 오류의 except 블록에 코딩된 내용을 실행

    • 파이썬은 발생할 수 있는 모든 문제를 예외 클래스로 만들어놓음

    • 모든 예외 클래스는 BaseException 클래스의 자식 클래스이며, BaseException 클래스의 자식 클래스 중 Exception 클래스는 모든 예외 클래스의 부모 클래스가 됨

      try:
          오류가 발생할 것으로 예상되는 문장
          ...
      except 오류클래스명1:
          해당 오류가 발생하면 실행할 문장
          ...
      else:
          오류가 없을 경우 실행할 문장
          ...
      finally:
          오류 발생 여부와 상관없이 무조건 실행할 문장

  • 파일 입출력
    1. 파일 열기

      • 파일 열기 모드: w(출력), a(추가출력), r(입력)
      • w는 지정된 경로에 파일이 없으면 파일을 만든 후 저장하고, 파일이 있으면 기존의 모든 데이터를 지우고 다시 저장
      • a는 지정된 경로에 파일이 없으면 만든 후 저장하고, 파일이 있으면 기존의 데이터 뒤에 이어서 저장
      • r은 지정된 경로에 파일이 없으면 에러, 있으며 해당 파일의 데이터를 읽어줌
      파일 변수 = open('파일이름', '파일 열기 모드')
      input = open('./text.txt', 'r') # 텍스트 파일 열기 모드
      input = open('./text.txt', 'rt') # t는 기본값
      input = open('./apple.jpg', 'rb') # 바이너리 파일 열기 모드
      • 파일의 종류 구분: t(text, 생략 가능), b(binary)
      • 출력 시(w,a) 작업이 완료되면 반드시 close method를 사용하여 파일을 닫아야 정상적으로 데이터를 저장
      1. write(): 파일에 데이터 입력
      2. read(): 파일로부터 데이터를 읽어옴
        • read(size): size만큼의 데이터를 읽어옴
    2. with 문

      • 자원을 획득하고 사용 후 반납해야 하는 경우 사용하는 문장
      • close()를 사용할 필요가 없음
      1. readline(): 텍스트 파일을 한 줄씩 읽어서 처리. 파일이 종료되어 더이상 읽을 수 없으면 빈 문자열을 반환

        with open('./output.txt', 'r') as file:
          lines = []
          while True:
            line = file.readline()
            if not line:
              break
            if len(line.strip()) != 0:
              print(line, end='')
              lines.append(line.strip())
        print(lines) # ['김사과', '바나나']
      2. readlines(): 전체라인을 모두 읽어서 각 라인 단위로 리스트에 요소로 저장

        with open('./output.txt', 'r') as file:
          lines = file.readlines()
          print(type(lines)) # <class 'list'>
          print(lines) #['김사과\n', '바나나\n']

  1. 모듈(module)
    • 클래스 또는 함수를 모아 놓은 파일
    • 모든 파이썬 파일은 모듈
    1. 외부 모듈 사용하기

      1. 모든 모듈의 전체 함수 가져오기
      import 모듈명
      # 사용
      모듈명.함수명()
      1. 특정 함수만 골라서 가져오기
      from 모듈명 import 함수1, 함수2, ...
      # 사용
      함수명()
      1. 모든 모듈의 함수 가져오기
      from 모듈명 import *
      # 사용
      함수명()
      1. 모듈 별명붙이기
      import 모듈명 as 별명
      # 사용
      별명.함수명()
  2. 패키지
    • 모듈의 상위개념
    • 모듈이 모여있는 디렉토리
    • 패키지 관리자: 외부 모듈을 설치 또는 삭제하기 위한 프로그램
      • pip 명령을 사용(파이썬 3.4 이후 파이썬을 설치하면 pip가 함께 설치됨)
      • 윈도우 명령 프롬프트 또는 맥 터미널에서 사용
      • pip --version으로 버전을 확인할 수 있음

  1. 자료구조(data structure)
    • 코드 상에서 효율적으로 데이터를 처리하기 위해 데이터의 특징에 따라 체계적으로 구조화하여 저장
    • 대표적인 자료 구조는 배열, 스택, 링크드리스트, 해쉬테이블, 힙 등...
  2. 알고리즘(algorithm)
    • 어떤 문제를 풀기 위한 절차 및 방법
    • 입력을 넣으면 원하는 출력을 얻을 수 있도록 만든 프로그램
  3. 자료구조와 알고리즘을 배우는 이유
    • 어떤 자료구조와 알고리즘을 사용하느냐에 따라 프로그램의 성능 차이가 큼
  4. 파이썬을 활용한 자료구조와 알고리즘
    • 어떤 언어로든 자료구조와 알고리즘을 공부할 수 있음
    • 예전에는 C언어 또는 C++로 작성하는 경우가 많았음
    • 최근에는 언어로 인한 제약/평가는 없어짐
    • 가장 쉽고 빠르게 자료구조/알고리즘을 익힐 수 있고 평가할 수 있는 언어는 파이썬

  1. 배열
    • 데이터를 나열하고 각 데이터를 인덱스에 대응하도록 구성한 자료구조
    • 파이썬 리스트 타입은 배열 기능을 제공함
    1. 배열이 필요한 이유

      • 같은 종류의 데이터를 효율적으로 관리하기 위해 사용
      • 같은 종류의 데이터를 순차적으로 저장
      • 빠른 접근이 가능(인덱스 번호로 접근 시)
    2. 배열의 단점

      • 데이터의 추가/삭제가 어려움
      • 미리 최대 길이를 설정해야 함
      # 1차원 배열: 리스트로 구현
      arr_list = [1,2,3,4,5]
      # 2차원 배열: 리스트로 구현
      arr_list = [[1,2,3],[4,5,6],[7,8,9]]
      # 인덱싱
      print(arr_list[0]) # [1, 2, 3]
      print(arr_list[0][0]) # 1

  1. 큐(Queue)

    • 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
    • FIFO(First-in, First-Out)
    • 줄을 서는 행위와 유사
    1. 큐의 사용
      • 멀티테스킹을 위한 프로세스 스케쥴링 방식을 구현(운영체제)
      • 푸시메시지
    2. 큐의 용어
      • Enqueue: 큐에 데이터를 넣는 기능
      • Dequeue: 큐에 데이터를 꺼내는 기능
      • 비쥬얼고
    3. queue 라이브러리 사용
      • Queue(): 가장 일반적인 큐 자료구조를 생성
      • LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조(스택)
      • PriorityQueue(): 데이터마다 우선순위가 높은 순으로 데이터를 출력(값이 작을수록 우선순위가 높음)
    import queue
    
    data_queue = queue.Queue() # 일반적인 큐
    data_queue = queue.LifoQueue()
    data_queue = queue.PriorityQueue()
    
    data_queue.put('apple') # Enqueue
    print(data_queue.get()) # Dequeue / 변수에 담을 수 있음
    print(data_queue.qsize()) # 사이즈 출력
    
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글