혼공학습단/혼자 공부하는 파이썬

[혼공학습단 파이썬] #7-2. 외부 모듈(BeautifulSoup, Flask), 모듈 만들기, 디버깅

✨️데이터분석가✨️ 2023. 8. 15. 13:06
728x90
728x90
7. 모듈
    2) 외부 모듈
         (1) 모듈 설치하기
         (2) BeautifulSoup 모듈
         (3) Flask 모듈

         (4) 라이브러리와 프레임워크
    3) 모듈 만들기
    4) 텍스트/바이너리 데이터
         (1) 텍스트 데이터
         (2) 바이너리 데이터
    5) 디버깅
    6) 데코레이터

 

2) 외부 모듈

외부 모듈: 파이썬이 기본으로 제공하지 않는 모듈 (사용자가 만든 모듈)

 

(1) 모듈 설치하기

- 명령 프롬포트에서 설치! (window+R → cmd 입력 or 터미널에서 입력)

- pip install 외부 모듈명

> pip install Beautifulsoup4
  Collecting soupsieve>1.2 (from Beautifulsoup4)
  Downloading soupsieve-2.4.1-py3-none-any.whl (36 kB)

...

 

 

(2) BeautifulSoup 모듈

- 웹페이지 분석 모듈

- 기상청 홈페이지에서 날씨 확인하기

from urllib import request
from bs4 import BeautifulSoup
content = request.rulopen("http://www.weather.go.kr")
soup = BeautifulSoup(content, 'html.parser')
for data in soup.select("data"):
    print("시간:", data.select_one("tmef"))
    print("날씨:", data.select_one("wf"))
더보기

# 실행결과

시간: <tmef>2023-08-25 00:00</tmef>
날씨: <wf>흐림</wf>
시간: <tmef>2023-08-26 00:00</tmef>
날씨: <wf>흐림</wf>

...

 

 

(3) Flask 모듈

- 웹 개발 프레임워크 모듈

from flask import Flask
app = Flask(__name__)
@app.route("/")   # 데코레이터
def hello():
    return "Hello, World!"

 

- 실행은 명령 프롬포트에 아래 2줄 입력

> set FLASK_APP=파일명

> flask run

더보기

# 실행결과

* Serving Flask app 'flask_basic' (lazy loading)

...

 

 

(4) 라이브러리와 프레임워크

라이브러리, library 프레임워크, framework
정상적인 제어 방법으로 사용하는 모듈
(개발자가 모듈을 직접 사용)
제어 역전(IoC)이 일어나는 모듈
(모듈이 개발자의 코드를 사용)
* 제어 역전: 개발자가 만든 함수를 모듈이 실행하는 것
예) math 모듈 예) Flask 모듈

 

 

 


3) 모듈 만들기

- 두 파일(실행 코드가 작성된 파일, 읽어들이는 main 파일)을 생성

# 파일명: module_test.py
print(__name__)
a = 10
b = 20
def c():
    return 30
if __name__ == "__main__":
    print("엔트리 포인트입니다. B")
더보기

# 실행결과

__main__
엔트리 포인트입니다. B

 

- 엔트리 포인트 = 메인: 프로그램의 진입점

- 모듈 내 __name__: 모듈명(파일명)을 의미

- __name__ == "__main__": 현재 파일이 엔트리포인트인지 확인

# 파일명: module_main.py
print(__name__)
import module_test as test
print(test.a)
print(test.b)
print(test.c())
if __name__ == "__main__":
    print("엔트리 포인트입니다. A")
더보기

# 실행결과

__main__
module_test    (→ 파일명 출력)
10
20
30
엔트리 포인트입니다. A

 

 

 


4) 텍스트/바이너리 데이터

텍스트 데이터, text data 바이너리 데이터, binary data
텍스트 에디터에서 편집할 수 있는 데이터 텍스트 에디터로 편집할 수 없는 데이터
→ 전용 편집기 필요 (예, 포토샵 등)
용량이  용량이 작음

 

(1) 텍스트 데이터

- 텍스트 데이터는 편집 가능해서 기존과 동일하게 작성

file = open("output.py", "r")
print(file.read())
file.close()

 

 

(2) 바이너리 데이터

- 바이너리 데이터(이미지)는 편집 불가능이라 "rb", "wb"로 작성

  * read byte, write byte 

file = open("habit logo.png", "rb")
data = file.read()
print(data[:100])
file.close()
더보기

# 실행결과

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x07I\x00\x00\x05\x1a\x08\x06\x00\x00\x00\x80jK\xa1\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\tpHYs\x00\x002\xc0\x00\x002\xc0\x01(dZ\xdb\x00\x00\xff\xa5IDATx^\xec\x9d\x07\\\x14\xf7\xd6'

 

 

 


5) 디버깅

- 중단점(breakpoint): 왼쪽에 줄 번호를 클릭하면 표기되는 붉은색 점

- 디버그(debug): 버그(예상하지 못한 오류)를 제거하는 것

- 디버그 실행 방법

디버그 실행 방법

 

- 디버그를 실행하면 중단점에서 멈추고, '계속' 버튼 클릭을 통해 다음 단계로 실시

- 변수, 조사식, 호출 스택으로 코드의 상태/흐름을 알 수 있음

디버그 기능

 

 

 


6) 데코레이터

- @로 시작하는 구문으로, 미리 만든 규격화된 처리를 적용할 때 사용

- @데코레이터 + 함수  ↔  함수 = 데코레이터(함수)

  예) @deco  ↔  test = deco(test)

def deco(function):
    print("미리 처리합니다")
    return function
@deco
def test():
    print("안녕하세요")
test()
더보기

# 실행결과

미리 처리합니다
안녕하세요

 

 

 

728x90
728x90