파이썬의 여러가지 모듈과 패키지

Namung's Sea·2021년 10월 26일
0

NIPA AI 온라인 교육

목록 보기
6/18
post-thumbnail

1. 모듈

  • 코드의 길이가 길어지는 상황
    이 때, 모든 함수·변수를 구현하는 것은 불가능
    -> 누군가 만들어 놓은 함수, 변수 등을 활용하자!

    ex) 우리가 레고로 무언가 만들 때 이미 만들어진 블럭을 활용함.
    이 때 쓰는 블럭이 모듈과 같음.

  • 특정 목적을 가진 함수, 자료의 모임

2. 모듈 사용하기

1) 모듈 사용하기1

  • import(불러오다) 키워드를 이용하여 모듈 사용
    파이썬에게 "나 모듈 사용할게!" 라고 말하고 불러오는 것.
import random
# random 모듈 불러오기

2) 모듈 사용법 확인하기

  • 모듈 속 사용하려는 함수/변수의 사용법 확인.

  • random.randrange(start, stop) 이 함수를 살펴보자.

    여기서 random은 모듈, .randomrange()는 함수이고,
    괄호 안에 있는 startstop은 변수이다.
    처음 시작하는 수인 start와 끝나는 마지막 지점에 있는 수 stop을 넣고 그 범위 안에서 랜덤하게 한 원소를 가지고 온다.

3) 모듈 사용하기2

모듈 사용법을 확인했으니 본격적으로 사용법을 익혀보자.

  • .(dot)을 쓴 후에 모듈 속 함수/변수 사용
  • .(dot)을 이용해 함수에 접근 하는 것을 "점 표기법(Dot notation)"이라고 함.
  • B함수가 A모듈 안에 들어있다고 표현할 때, A모듈.B함수라고 표기함.
import random

print(radom.randrange(0,2)) # 0이상 2미만의 수 중 임의로 출력

4) 모듈 만들기

그렇다면 원하는 모듈이 없다면 어떻게 하면 좋을까?
우리가 원하는 내용이 담긴 모듈을 제작하면 된다.

  • .py(파이썬 파일로 모듈 만들기 가능.

import my_module 만들기

  1. py파일을 생성 한 후, 함수와 변수를 만든다.
# cal.py -> 하나의 모듈!
def plus(a, b):
	c = a+b
    return c
  1. 다른 파일에서 만들어 둔 py 파일을 불러온다.
# main.py -> 하나의 모듈!. main.py는 보통 우리가 파이썬 프로그램을 처음 실행할 때 보이는 화면.
import cal # cal 모듈을 불러와라는 뜻.
  1. 불러온 모듈 속 함수, 변수를 활용한다!
# main.py
import cal
print(cal.plus(3,4)) # cal 모듈의 plus 함수를 사용하겠다! | 출력: 7

실습1. 모듈 만들기(계산기 모듈을 직접 만들어 보자!)

문제

cal.py 모듈은 계산기 기능이 담긴 모듈입니다. 이 안에는 plus()minus() 함수가 있고, 모델명이 담긴 변수 modelName이 있습니다. 실습에서 직접 이 cal.py를 만들어보고, main.py에서 이를 불러와봅시다.

과정

  1. cal.py 파일을 열고, a,b를 인자로 갖는 함수 plus, minus를 정의해봅니다.
  • plus : a+b를 반환하는 함수
  • minus : a-b를 반환하는 함수
  1. cal.py 파일에서 변수 modelName을 만들고 ‘ELI-C2’를 대입해봅시다.

  2. main.py 파일을 열고, import cal을 이용해 저장된 모듈 cal을 불러와봅시다.

  3. 변수 var1에 모듈 cal의 모델이름(modelName)을 넣어봅시다.

  4. 변수 var2에 모듈 cal의 plus 함수를 이용해서 3+4의 값을 넣어봅시다.

  5. 변수 var3에 모듈 cal의 minus 함수를 이용해서 7-2의 값을 넣어봅시다.

  6. var1, var2, var3의 값을 출력하여 확인해봅시다.

code

# cal.py
def plus(a, b): # 1번
    return a+b

def minus(a, b):
    return a-b

modelName = 'ELI-C2' # 2번
# main.py
import cal # 3번

var1 = cal.modelName # 4번

var2 = cal.plus(3,4) # 5번

var3 = cal.minus(7,2) # 6번

## 변수의 값을 확인하는 출력문입니다.
print(var1, var2, var3) # 7번 

실행 결과

ELI-C2 7 5

3. 패키지

1) 패키지란?

  • 모듈을 폴더(Directory)로 구분하여 관리하는 것.

2) 패키지는 왜 필요할까🤔?

-> 모듈을 편리하게 관리하기 위해서!

위 사진 속 폴더 안에는 다 각자의 파이썬 파일(.py)이 들어가 있음.
분류하여 찾기 쉽도록 패키지를 사용함.

3) 패키지 속 모듈 사용하기

  • 다음과 같이 모듈이 있을 때, 이를 사용하는 방법은?

  • 방법 1. import를 이용해서 폴더를 불러온 후, 함수 실행

import user.cal # user라는 폴더 안에 cal이라는 모듈을 불러와라. import는 폴더를 불러오는 것도 가능함.

print(cal.plus(3, 4)) # cal 모듈의 plus 함수를 사용하겠다. 이후 반환값을 출력하겠다.
  • 방법 2. from (패키지.)모듈 import 함수 사용
    - 함수/변수 사용시 .을 써주지 않아도 된다.
    - 두 개의 파이썬 파일을 사용할 때 그 안에 같은 이름의 함수가 있을 경우,
    .을 빼면 컴퓨터 입장에선 혼동이 일어나기 때문에 명확히 명시해주자!
from user.cal import plus # user 안에 있는 cal 모듈로부터 plus함수를 불러와라.

print(plus(3,4)) # cal.plus()라고 적어주지 않아도 된다.

실습 2. import vs from-imort

  • 사전 학습✍
    • 모듈을 불러오는 방법
      • from a import b: a 모듈(혹은 패키지)에서 b함수를 가져오겠다. b를 사용하기 위해선 b() 꼴로 사용 가능.
      • import a: a 모듈을 불러오겠다. a 모듈 안에 있는 b함수를 사용하기 위해선 a.b() 꼴로 사용해야 함.

문제

앞에서 배웠던 두 모듈 - random과 math를 다르게 불러와보자.

과정

  1. from a import b를 이용해서 random의 randrange()를 불러와봅시다.

  2. import a를 이용해서 math 모듈을 불러와봅시다.

  3. 변수 var1에 randrange 함수를 이용해 1이상 10이하의 임의의 정수를 넣어봅시다.

  4. 변수 var2에 math.log 함수를 이용해 log72(5184)의 값을 넣어봅시다.

  5. var1, var2를 출력하여 결과값을 확인해봅시다.

code

from random import randrange # 1번
import math # 2번

var1 = randrange(1,11) # 3번
var2 = math.log(5184, 72) # 4번

print(var1, var2) # 5번 | 출력: 10, 2.0

실습 3. 웹페이지 방문 (웹페이지가 어떻게 구성되어 있는지 확인하자)

문제

Python에서는 쉽게 웹페이지의 정보를 가져올 수 있는 urllib패키지를 제공합니다. 이 중에서 urllib.request.urlopen 함수는 해당 url의 html 파일을 가져옵니다.
위 함수를 이용해서 https://en.wikipedia.org/wiki/Lorem_ipsum 홈페이지의 정보를 가져와봅시다.

TIP

  • urlopen() : 이 함수에 url을 넣으면 해당 url에 접근한 결과를 얻을 수 있습니다.
    read() : 결과를 해독하여 문자열로 반환합니다.
    decode() : 문자열을 특정 인코딩 방식으로 해독합니다. (유니코드, 아스키 코드 등)

  • 함수는 .을 사용하여 여러개를 한 번에 사용할 수 있다.
    A().B().C()

  • 주소 등은 문자이므로 함수 안에 넣을 때 " "을 사용해준다.

과정

  1. from-import를 이용해서 urllib패키지 안 request 모듈에서 urlopen 함수를 불러오는 코드를 작성해봅시다.

  2. 다음 주소를 urlopen하고, read() 한 다음, 이를 utf-8으로 decode 한 결과를 변수 webpage에 넣어봅시다.
    주소: https://en.wikipedia.org/wiki/Lorem_ipsum

  3. 변수 webpage를 출력해봅시다. 무엇이 나오나요?

code

from urllib.request import urlopen # 1번

webpage = urlopen("https://en.wikipedia.org/wiki/Lorem_ipsum").read().decode("utf-8") # 2번. 여러 함수를 연결할 때는 `Dot(.)`을 이용하자.

print(webpage) # 3번

실행 결과

<!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Lorem ipsum - Wikipedia</title>
<script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":!1,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"4b8f7436-2113-4b54-b0d6-174dec92358f","wgCSPNonce":!1,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":!1,"wgNamespaceNumber":0,"wgPageName":"Lorem_ipsum","wgTitle":"Lorem ipsum","wgCurRevisionId":1048686824,"wgRevisionId":1048686824,"wgArticleId":190246,"wgIsArticle":!0,"wgIsRedirect":!1,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 maint: unfit URL","CS1 Latin-language sources (la)","Articles with short description","Short description is different from Wikidata","Articles containing Latin-language text","Wikipedia articles containing placeholders","Articles containing Interlingue-language text",
"Pages using Sister project links with default search","Filler text","Latin words and phrases","Nonsense","Cicero"],"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Lorem_ipsum","wgRelevantArticleId":190246,"wgIsProbablyEditable":!0,"wgRelevantPageIsProbablyEditable":!0,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgFlaggedRevsParams":{"tags":{"status":{"levels":-1}}},"wgMediaViewerOnClick":!0,"wgMediaViewerEnabledByDefault":!0,"wgPopupsFlags":10,"wgVisualEditor":
.
.
.
profile
개발자로 시작| 공부한 것을 기록합니다.

0개의 댓글