Time for us to shine
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 6주차 본문
▶6주차 미션 (8/14 ~ 8/20)
진도 : Chapter 07-2 ~ 08
기본 미션 : p.431 [직접 해보는 손코딩: BeautifulSoup 스크레이핑 실행하기] 예제 실행 후 결과 화면 캡처하기
선택 미션 : 혼공 용어 노트에 나만의 언어로 객체, 클래스, 인스턴스, 생성자, 메소드 정리하고 공유하기
Chapter 07 모듈
07-1. 표준 모듈
- 모듈
- 파이썬은 모듈 기능을 활용해 코드를 분리하고 공유함
- 모듈 하다가 정보가 궁금하면 파이썬 공식 문서 참고
- 모듈과 같은 이름으로 파일 저장하지 않도록 주의
- 표준 모듈 : 파이썬에 기본적으로 내장되어 있는 모듈
- 외부 모듈 : 파이썬이 기본적으로 제공하지 않는, 다른 사람들이 만들어서 제공한 모듈
- import 구문 : 모듈을 읽어 들일 때 사용하는 구문
- from 구문 : 모듈을 읽어 들일 때 모듈에서 가져오려는 변수나 함수 앞에 모듈 이름을 붙이지 않아도 됨
- as 키워드 : 모듈을 읽어 들이고 별칭을 붙일 때 사용하는 구문
import 모듈 이름 # 일반적으로 모듈을 가져오는 import 구문 -> 코드의 가장 위에 작성
- math 모듈
- 수학과 관련된 기능을 가지고 있음
- 비주얼 스튜디오 코드의 자동 완성 기능으로 코드를 살펴보면 표로 정리한 것들보다 훨씬 더 많은것들 확인 가능
import math # 해당 문자 이후에 'math' 라는 모듈을 사용할 수 있음
< math 모듈의 함수 >
변수 또는 함수 | 설명 |
sin(x) | 사인 값을 구한다 |
cos(x) | 코사인 값을 구한다 |
tan(x) | 탄젠트 값을 구한다 |
log(x[, base]) | 로그 값을 구한다 |
ceil(x) | 올림한다 |
floor(x) | 내림한다 |
<from 구문>
- math.sin(), math.cos() 처럼 앞에 무언가를 계속 입력하는 것이 귀찮다고 느껴질 때 사용
- '가져오고 싶은 변수 또는 함수' 에 여러 개의 변수 또는 함수를 입력할 수도 있음
- 이 구문을 사용하면 가져온 기능(sin, con, tan....등)은 math를 앞에 붙이지 않고도 사용가능함
from 모듈 이름 import 가져오고 싶은 변수 또는 함수
<as 구문>
- 모듈을 가져올 때 이름 충돌이 발생하는 경우
- 모듈의 이름이 너무 길어서 짧게 줄여 사용하고 싶은 경우
- 이 구문을 사용하면 math 모듈을 m이라는 이름 등으로 사용할 수 있음
import 모듈 as 사용하고 싶은 식별자
- random 모듈
- 랜덤한 값을 생성할 때 사용하는 모듈
- 따라서, 실행할 때마다 결과가 다름
- from 구문 또는 as 구문과도 조합해서 사용할 수 있음
import random # 해당 문자 이후에 'random' 이라는 모듈을 사용할 수 있음
<random 모듈의 함수>
변수 또는 함수 | 설명 |
random() | 0.0 <= x < 1.0 사이의 float를 리턴한다 |
uniform(min, max) | 지정한 범위 사이의 float를 리턴한다 |
randrange() | 지정한 범위의 int를 리턴한다 |
randrange(max) | 0부터 max 사이의 값을 리턴한다 |
randrange(min, max) | min 부터 max 사이의 값을 리턴한다 |
choice(list) | 리스트 내부에 있는 요소를 랜덤하게 선택한다 |
shuffle(list) | 리스트의 요소들을 랜덤하게 섞는다 |
sample(list, k=<숫자>) | 리스트의 요소 중에 k개를 뽑는다 |
- sys 모듈
- 시스템과 관련된 정보를 가지고 있는 모듈
- 명령 매개변수를 받을 때 많이 사용함
- argv --> 명령 매개변수
- 프로그램을 실행할 때 추가로 입력하는 값들을 의미함
import sys
- os 모듈
- 운영체제와 관련된 기능을 가진 모듈
- 새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일도 모두 os 모듈을 활용해서 처리함
import os
<os 모듈의 함수>
변수 또는 함수 | 설명 |
name() | 현재 운영체제 |
getcwd() | 현재 폴더 |
listdir() | 현재 폴더 내부의 요소 |
mkdir() rmdir() |
폴더를 만들고 제거 (폴더가 비어있을 때만 제거 가능) |
rename() | 파일 이름 변경 |
remove() unlink() |
파일 제거 |
system() | 명령어 실행 (*위험할 수 있는 함수) |
- datetime 모듈
- date(날짜), time(시간) 과 관련된 모듈
- 날짜 형식을 만들 때 자주 사용되는 코드들로 구성되어 있음
import datetime
<datetime 모듈의 함수>
변수 또는 함수 | 설명 |
strftime() | 시간을 형식에 맞춰 출력할 수 있음 but, 한국어 등의 문자는 매개변수에 넣을 수 없음 |
timedelta() | 특정한 시간의 이전 또는 이후를 구할 수 있음 but, 1년 후/ 2년 후 등의 몇년 후 를 구하는 기능은 없음 |
replace() | 날짜 값을 교체함 |
- time 모듈
- 시간과 관련된 기능을 다룸
- 유닉스 타임(1970년 1월 1일 0시 0분 0초를 기준으로 계산한 시간 단위) 을 구할 때, 특정 시간 동안 코드 진행을 정지할 때 많이 사용
import time
<time 모듈의 함수>
변수 또는 함수 | 설명 |
sleep() | 특정 시간 동안 코드 진행을 정지 매개변수에는 정지하고 싶은 시간을 초 단위로 입력 |
- 코드를 실행하면
- "지금부터 5초 동안 정지합니다!" 를 출력하고 5초 동안 정지함
- 5초 후 "프로그램을 종료합니다." 를 출력함
- urllib 모듈
- URL을 다루는 라이브러리
- 인터넷 주소를 활용할 때 사용하는 라이브러리
- URL --> 웹 브라우저의 주소창에 입력하는 주소
import urllib
<urllib 모듈의 함수>
변수 또는 함수 | 설명 |
urlopen() | URL 주소의 페이지를 열어준다 |
read() | 해당 웹 페이지에 있는 내용을 읽어서 가져옴 |
07-2. 외부 모듈
- 외부 모듈
- 파이썬이 기본적으로 제공하지 않는, 다른 사람들이 만들어 제공하는 모듈
- 사이킷런, 텐서플로, 장고, 플라스크, 넘파이 등이 있음
- 모듈 설치하기
- 외부 모듈 설치
- window + R 키를 눌러 프로그램 실행 창 띄우고,
- [cmd] 입력하면 나타나는 명령 프롬포트 창에서 실행해야함
- pip : 파이썬 패키지 관리 시스템
- 특정 버전의 모듈을 설치
- 설치한 모듈을 제거 등
- pip install : 외부 모듈을 설치할 때 사용하는 명령어
- Beautiful Soup 모듈 : 웹 페이지를 분석할 때 사용하는 모듈
pip install 모듈 이름
- 모듈 찾아보기
- 책을 샀는데 책에서 모듈을 추천
ex) 웹 프로그래밍 --> Django / Flask
머신러닝 --> scikit-learn / keras
스크레이핑 --> requests / Beautiful Soup
영상 분석 --> cv2 / pillow - 파이썬 커뮤니티에 가입했는데, 어떤 모듈이 어떤 분야에서 인기
- 어떤 기능이 있는 모듈이 필요해서 구글에서 검색 --> "Python 내가 알고 싶은 것" 검색
- 책을 샀는데 책에서 모듈을 추천
- Beautiful Soup 모듈
- 파이썬의 웹 페이지 분석할 때 사용하는 모듈
- 코드 분석
- bs4 모듈의 BeautifulSoup() 함수의 매개변수로 HTML 문자열과 "html.parser" 라는 문자열을 넣으면 BeautifulSoup 라는 특수한 객체를 리턴함
- 지역이 표기된 location을 찾고, location 내부에 있는 city, wf, tmn, tmx 태그의 내용을 추출
- select() 함수 : 태그를 여러 개 선택할 때 사용
- select_one() 함수 : 태그를 하나만 선택할 때 사용
pip install beautifulsoup4 # 모듈 설치
- Flask 모듈
- 일반적으로 파이썬으로 웹 개발을 할 때는 Django(장고), Flask(플라스크) 등의 모듈을 사용함
- Django : 매우 다양한 기능을 제공하는 웹 개발 프레임워크
- Flask : 작은 기능만을 제공하는 웹 개발 프레임워크
pip install flask # 모듈 설치
- 라이브러리와 프레임워크
- 라이브러리 : 개발자가 모듈의 기능을 호출하는 형태와 같이 정상적인 제어를 하는 모듈
- 프레임워크 : 모듈이 개발자가 작성한 코드를 실행하는 형태의 모듈
- 제어 역전 : 개발자가 모듈의 함수를 호출하는 것이 일반적인 제어 흐름이나, 이와 반대로 개발자가 만든 함수를 모듈이 실행하는 것
- 라이브러리와 프레임워크는 최근 큰 구분 없이 사용하는데, 확실하게 구분하자면 제어 역전 여부에 따라 달라짐
구분 | 설명 |
라이브러리 (library) | 정상적인 제어를 하는 모듈 |
프레임워크 (framework) | 제어 역전이 발생하는 모듈 |
라이브러리
--> math 모듈은 모듈 내부의 기능을 "개발자"가 직접 호출했음
--> 이처럼 개발자가 모듈의 기능을 호출하는 형태의 모듈을 라이브러리 라고 함
프레임워크
--> 코드를 보면 내부에 함수만 정의했지 직접적으로 무언가 진행하는 코드는 단 하나도 없음
--> 우리가 작성한 코드를 직접 실행하지 않았는데, Flask 모듈이 제공하는 명령어를 실행하면 Flask가 내부적으로 서버를 실행한 뒤 지정한 파일을 읽어 들여 적절한 상황에 스스로 실행하게 됨
--> 이처럼 모듈이 개발자가 작성한 코드를 실행하는 형태의 모듈을 프레임워크 라고 함
Chapter 08 클래스
08-1. 클래스의 기본
- 객체 지향 프로그래밍 (OOP)
- 객체를 우선으로 생각해서 프로그래밍 한다는 의미
- 객체와 관련된 코드를 분리할 수 있게 하는 것이 핵심 --> 클래스
- 클래스 기반의 객체 지향 프로그래밍 언어는 클래스 라는 것을 기반으로 객체를 만들고,
그러한 객체를 우선으로 생각해서 프로그래밍 해야함 - 객체 지향 프로그래밍 언어 : 객체를 기반으로 프로그램을 만드는 프로그래밍 언어
- C를 제외한 모든 프로그래밍 언어는 객체 지향 프로그래밍 언어임
- 객체
- 속성을 가질 수 있는 모든 것
- 추상화
- 프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것
- 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
- 클래스
- 객체를 쉽고 편리하게 생성하기 위해 만들어진 구문
- 만들어진 클래스는 클래스 이름과 같은 함수(생성자)를 사용해서 객체를 만든다
- 인스턴스 : 클래스를 기반으로 만들어진 객체
- 클래스 : 붕어빵 틀 / 인스턴스 : 실체화된 붕어빵
class 클래스 이름:
클래스 내용
인스턴스 이름(변수 이름) = 클래스 이름() --> 클래스 이름()은 생성자 함수라고 부름
클래스 이름 만들기
--> 각 단어의 앞 글자를 대문자로 만들고, 이를 합쳐서 이름을 만드는 캐멀 케이스 규칙을 지켜서 짓는 것이 좋음
ex) BeautifulSoup()
- 생성자
- 클래스 이름과 같은 인스턴스를 생성할 때 사용하는 함수
- __init__() 함수 : 객체를 생성할 때 처리할 내용을 작성할 수 있음
- 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self 입력해야함
- self : '자기 자신'을 나타내는 딕셔너리
- 다만, self가 가지고 있는 속성과 기능에 접근할 때 --> self.<식별자> 형태로 접근
class 클래스 이름:
def __init__(self, 추가적인 매개변수):
pass
- 소멸자
- 생성자와 반대로 인스턴스가 소멸될 때 호출되는 함수
- __del__() 함수
class 클래스 이름:
def __del__(self):
pass
--> 코드를 실행하면 Test("A")가 실행될 때 생성자가 호출되고, 프로그램이 종료될 때 소멸자가 호출됨
- 메소드 (== 멤버 함수, 인스턴스 함수)
- 클래스가 가지고 있는 함수
- 만들 때, 생성자를 선언하는 방법과 같음
class 클래스 이름:
def 메소드 이름(self, 추가적인 매개변수):
pass
🎁기본미션
모듈들 설치하고 했는데 계속 실행이 안되고 오류 떠요 ㅜㅜ
🎁선택미션
'혼공학습단 > 혼자 공부하는 파이썬 (개정판)' 카테고리의 다른 글
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 5주차 (0) | 2023.08.10 |
---|---|
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 4주차 (0) | 2023.07.28 |
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 3주차 (0) | 2023.07.23 |
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 2주차 (0) | 2023.07.16 |
[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 1주차 (0) | 2023.07.09 |