Python

Python - 모듈

구름이팡팡 2021. 7. 14. 16:19
728x90

<모듈>

: 파이썬 코드를 논리적으로 묶어서 관리하고 사용할 수 있도록 하는 것

- 하나의 파이선 .py 파일이 하나의 모듈

- 모듈의 종류

 · 표준 모듈

 · 사용자 정의모듈

 · 외부 모듈(3rd Party)

- 모듈의 호출 방법: import 모듈명 으로 모듈을 가져올 수 있음

 · as(alias)를 활용해 긴 모듈명을 줄일 수 있음

 · 하나의 새로운 이름 공간을 확보하며 정의됨

 · 'from 모듈 import 함수1, 함수2 ...' 로 모듈 내 특정 함수만 가져올 수 있음

 

<모듈의 장점>

- 중복된 코드의 재작성을 줄일 수 있음: 필요 시 호출하여 사용

- 전체 코드를 관련된 모듈들로 분리하여 설계: 구조적 프로그래밍 가능

- 별도의 이름공간을 제공: 동일한 이름의 여러 함수나 변수들을 모듈마다 정의 가능

 

<함수와 모듈의 차이>

- 함수: 파일 내에서 특정한 동작을 수행하는 코드를 독립된 단위로 작성 (같은 파일 내 같은 이름공간)

- 모듈: 파일 단위로 코드들을 묶어 사용(단 독립된 단위의 코드를 말함)

 · 비슷하거나 관련된 일을 하는 함수 등의 코드를 하나의 파일에 저장하고 추후 사용하는 단위

 

<모듈의 검색 경로(파이썬이 모듈을 검색하는 순서)>

1. 이미 메모리에 로딩된 모듈

2. 현재 디렉토리에 있는 .py 파일 

3. 환경변수(PYTHONPATH)에 등록된 경로에 있는 파일들

4. 표준 모듈 목록

 

<표준 모듈>

: 파이썬은 기본적으로 많은 표준 라이브러리 모듈을 제공하고 있음

- 파이썬에서 제공되는 모듈 목록 확인: https://docs.pytho n.org/3/pymodindex.html

- 현재 사용할 수 있는(설치된) 모듈의 목록 확인: help(“modules”) 명령어 사용

- Anaconda로 파이썬을 설치한 경우: Anaconda 폴더 내 lib 폴더에 모듈 직접 확인 가능 해당 파일을 직접 찾아서 해당 모듈의 내용을 수정할 수 있지만, 권장하지 않음!

- 표준 모듈의 종류

 · os 모듈: 운영체제와 상호작용하기 위한 수십가지 함수 제공

 · time 모듈: 시간과 관련된 여러 함수 제공

 · random 모듈: 다양한 랜덤 관련 함수 제공

 · math 모듈: 수학적으로 복잡한 연산이 필요한 경우, 수학과 관련된 함수 제공

 · calendar 모듈: 달력과 관련된 여러 함수 제공

- 모듈의 활용법

 · 필요한 기능에 대한 인터넷 검색

 · help(“모듈명”)으로 모듈에 대한 설명 확인

 · 모듈 import 후 모듈명 . + Tab키로 활용 가능한 모듈 확인

 · 해당 모듈 위에 커서를 두고 Shift + Tab키로 모듈의 설명 확인

 

<사용자 정의 모듈 만들기>

- 파이썬의 모듈 검색 경로에 파이썬 파일 생성 

 cf) 주로 현재 프로그램이 실행되는 곳과 같은 경로에 생성

- Jupyter Notebook 환경의 경우 같은 경로에 .py 파일로 코드 작성

 cf) Text File로 생성 후 파일명 변경

 

<사용자 정의 모듈 사용하기>

- import 생성한 모듈명

 cf) Jupyter Notebook의 경우 오류 발생 시 커널 재시작

- import: 단순 코드를 가져오는 것이 아닌 가져온 코드를 실행하는 것, print가 실행되는 것을 확인

- 동일한 변수도 다른 모듈에서 가져와 재정의 가능

 

< __name__ 활용>

: 모듈의 이름이 저장되는 변수, 현재 모듈이 최상위 모듈로 수행되는지 여부 확인 가능

- __main__을 출력하면 해당 파일이 가장 먼저 실행되는 최상위 모듈

- 사용자 정의 모듈에 name이 main일 때의 조건문을 적어 테스트 코드로 사용 가능: 해당 조건문 내 코드는 test.py가 최상위 모듈로 사용될 때만 실행(모듈로 활용될 때는 무시)


<외부 모듈>

- 공개 소스 라이센스 계약에 따라 개발한 소프트웨어를 다른 사용자가 사용 가능

- 파이썬 : 널리 사용되는 개방형 소스 개발 프로젝트, 파이썬은 비영리 재단이 관리하는 오픈 소스로, 다양한 단체와 커뮤니티에서 활발하게 관련 모듈을 만들고 배포하고 있음

- 다양한 사용자층과 커뮤니티가 활성화되어 있음

- 대표적으로 파이썬 패키지 인덱스(PyPI)로 불리는 라이브러리 저장소 관리 기구가 있음

- 4차 산업혁명 관련 IT 분야에서 파이썬의 중요성이 높아지고 있는 이유: 파이썬이 해당 분야의 프로그래밍에 도움되는 외부 모듈을 다양하게 제공하기 때문

 

<외부 모듈 설치하기>

: 대표적으로 PyPI 공식 기구에서 관리하는 모듈은 PIP라는 패키지 관리자 명령어로 손쉽게 설치할 수 있음

1. 패키지 관리자 사용하기(PIP)

cf) 파이썬 3.4 이후 버전은 기본적으로 pip를 포함하고 있으며, 손쉽게 외부 모듈을 설치할 수 있음

2. 콘솔창에서 pip install 패키지명 한 줄로 외부 모듈 설치 가능

3. Jupyter Notebook 환경에서 명령어 앞 !를 붙여 설치 가능: !pip install 패키지명

- 느낌표(!)를 붙이면 콘솔창에서 입력하는 것과 같은 역할 

- 삭제는 pip uninstall 모듈명

4. Anaconda를 설치했다면, Anaconda Navigator에서 설치 가능

- 환경을 달리 정의할 수 있고, 환경마다 패키지(외부 모듈)를 설치할 수 있음

5. 일반 사용자들이 개발한 모듈도 사용 가능

- 사용자 정의 모듈과 같은 방법으로, git 등의 경로에서 다운 받은 파일을 로컬 경로에 저장

 

<외부 모듈로 데이터 베이스 연결하기>

: pymysql 모듈을 활용해 MySQL 데이터베이스와 연결해 데이터를 관리할 수 있음

1. 데이터 베이스 연결하기

- pymysql: MySQL을 파이썬에서 사용할 수 있는 모듈 중 하나

- pip install pymysql로 설치

- MySQL 설치 (https://dev.mysql.com/downloads/mysql/)

cf) 전 세계에서 가장 많이 사용되는 오픈 소스 관계형 데이터베이스

 

2. 데이터베이스 서버 환경

- test db에 test 테이블 생성

- 직접도 가능

 · 스키마 생성 코드(Mysql에 붙여 넣어 실행) CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */;

 · 테이블 생성 코드(Mysql에 붙여 넣어 실행)

CREATE TABLE `test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(500) CHARACTER SET utf8 DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`enable` varchar(45) DEFAULT '0',

PRIMARY KEY (`id`) )

ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

3. 모듈 import, 연결 정보 정의 (서버 주소, 포트번호, 아이디, 비밀번호)

 

4. 데이터 가져오기

 ex) "SELECT * FROM test.test"

 

5. 데이터 입력하기

 ex) "INSERT INTO test (name, age, enable) VALUES (%s, %s, %s);"

 

<외부 모듈로 웹 크롤링>

: BeautifulSoup 모듈을 활용해 웹 크롤링을 HTML 태그 단위로 보다 손쉽게 할 수 있음

- 웹 크롤링: 컴퓨터 소프트웨어 기술로 웹 사이트들에서 원하는 정보를 추출하는 것

 · 파이썬에서 웹 크롤링을 지원하는 대표 라이브러리 BeautifulSoup 설치: pip install beautifulsoup4로 설치

ex) 포털 사이트 급상승 검색어 가져오기
import urllib.request
import bs4
web_page = urllib.request.urlopen("https://www.naver.com")
result = bs4.BeautifulSoup(web_page, "html.parser")
rank = result.find("ul",class_="ah_l")
for i in rank.find_all("li"):
     print(i.get_text("위 : ", strip=True))

1. urllib 모듈로 웹 페이지 가져오기
- urllib: 파이썬에서 웹과 관련된 작업을 도와주는 모듈
- 데이터를 가져오는 역할을 하는 urllib 중 request 모듈을 활용해 포털 사이트의 메인 페이지 정보를 가져옴
2. BeautifulSoup 모듈로 웹 페이지 분석
- 텍스트화된 웹 페이지는 BeautifulSoup 모듈을 활용하면 HTML 태그 단위로 분석 가능
3. 급상승 검색어 부분의 패턴 찾기 (브라우저의 페이지 소스보기) 
4. 필요한 정보만 가공하여 마무리 
- 반복문과 HTML 내 텍스트만 가져오는 get_text 함수를 활용해 검색어만 추출
728x90