AI/혼공학습단10기_Python

[혼공파] 6주차 과제 - 모듈 실행, Wrapup

moviewine 2023. 8. 10. 14:32

1. 요약

- 외부 모듈(external module)은 파이썬이 기본적으로 제공하지 않는 모듈로서 누군가(혹은 기업) 만들어 제공한 모듈임.
- pip install은 외부 모듈을 설치할 때 사용하는 명령어
- 라이브러리(library): 개발자가 모듈의 기능을 호출하는 것. 정상적인 제어 모듈.
- 제어 역전(IoC: Inverse of Control): 개발자가 모듈 함수를 호출하는 것이 일반적이나, 이와 반대로 개발자가 만든 함수를 모듈이 실행하는 것.
   예를 들어 프레임워크(framework)는 제어 역전이 발생되는 모듈임. 즉 개발자가 작성한 코드를 모듈이 실행하는 형태.
- 엔트리 포인트(entry point): python 명령어를 사용한 첫 진입 파일
- __name__ == “__main__” : 현재 파일이 엔트리 포인트인지 확인할 때 사용하는 코드
- 패키지(package): 모듈이 모인 것

- 객체(object): 속성을 가질 수 있는 모든 것
- 객체 지향 프로그래밍 언어(Object Oriented Programming Language): 객체를 기반으로 프로그램을 만드는 프로그래밍 언어
- 추상화(abstraction): 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적 개념 또는 기능을 간추려 내는 것
- 클래스(class): 객체를 쉽고 편리하게 생성하기 위해 만들어진 구문
- 인스턴스(instance): 클래스 기반으로 생성한 객체
- 생성자(constructor): 클래스 이름과 같은 인스턴스를 생성할 때 사용하는 함수
- 메소드(method): 클래스가 가진 함수
- isinstance() 함수: 어떤 클래스의 인스턴스인지 확인할 때 사용
- 클래스 변수클래스 함수: 클래스 이름 뒤에 마침표를 찍고 바로 사용할 수 있는 클래스가 갖고 있는 변수와 함수
- 상속(inheritance): 어떤 클래스 기반으로 그 속성과 기능을 물려받아 새로운 클래스를 만드는 것



2. 손코딩: BeautifulSoup, Flask 모듈을 이용한 웹 서버 만들기 (스크레이핑 실행)

1) BeautifulSoup 모듈을 이용한 날씨 Web 정보 추출
   (소스) - kma.go.kr의 날씨 정보를 BeautifulSoup()모듈을 통해 추출

   (결과)
   - BeautifulSoup()모듈의 html을 parse하고,
   - location 마다의 정보를 for문으로 추출
   - 도시, 날씨정보, 최대온도, 최소온도를 하나씩 추출


2) FLASK모듈을 이용한 날씨 정보 추출
  (소스) - 1) 번과 같은 내용을 반복하되,
   app = Flask(__name__)
   @app.route(‘/‘)
   를 통해 웹 서버 제작

  (결과)
   - Colab에서 실행하여 cmd box기능을 사용할 수 없어 결과를 미리보기 정도로만 확인
   - cmd에서 실행 코드
      (윈도우)
      set FLASK_APP = flask_basic.py
      flask run
      (리눅스)
      export FLASK_APP=flask_basic.py
      flask run




3. 주요 내용 정리

1) 객체(Object): 리스트, 딕셔너리 등 속성을 갖을 수 있는 모든 대상

2) 클래스(Class): 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문
  class 클래스이름:
         클래스 내용

3) 인스턴스(Instance): 클래스 기반으로 만들어진 객체
“인스턴스 이름(변수 이름) = 클래스 이름()” 의 형태로 정의할 수 있음.

4) 생성자: 클래스 이름과 같은 함수로서 클래스 내부에 __init__이라는 함수를 만들면 객체를 생성할 때 처리할 내용을 작성할 수 있음.
  class 클래스 이름:
        def __init__(self, 추가적인 매개변수):
               pass

5) 메소드: 클래스가 가지고 있는 함수. 클래스 내부에 메소드를 만들 때는
  class 클래스 이름:
        def 메소드 이름(self, 추가적인 매개변수):
                pass
와 같이 만듦.