Python의 패키지에 대한 개념 및 활용방법에 대해 정리합니다.

패키지와 모듈 & 함수의 관계도

패키지와모듈

  • 출처: pythonstudy.xyz

모듈 임포트

  • 그동안 사용했던 함수들 처럼, 다양한 기능들이 미리 함수로 구현되어 모듈 형태로 제공되고 있다.

  • 대표적으로 사용되는 모듈은 아래와 같다.

    • requests - HTTP 요청/응답 모듈

    • numpy - 수치해석 모듈

    • pandas - 데이터 분석 모듈


import 를 하는 이유?

  • 기존에 다른 사람이 만들어 둔 유용한 모듈을 가져와서 쉽게 사용할 수 있기 때문
1
2
3
import requests # 추후에 정리할 웹 크롤링 에서 유용하게 사용되는 모듈 requests
resp = requests.get('http://naver.com') # Naver 메인페이지에서 정보를 request하여 get한다.
resp.text # get한 정보중 text를 출력한다.
1
2
3
<pre>
'\n<!doctype html>                          <html lang="ko" data-dark="false"> <head> <meta charset="utf-8"> <title>NAVER</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=1190"> <meta name="apple-mobile-web-app-title" content="NAVER"/> <meta name="robots" content="index,nofollow"/> <meta name="description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/> <meta property="og:title" content="네이버"> <meta property="og:url" content="https://www.naver.com/"> <meta property="og:image" content="https://s.pstatic.net/static/www/mobile/edit/2016/0705/mobile_212852414260.png"> <meta property="og:description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content=""> <meta name="twitter:url" content="https://www.naver.com/"> <meta name="twitter:image" content="https://s.pstatic.net/static/www/mobile/edit/2016/0705/mobile_212852414260.png"> <meta name="twitter:description" content="네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요"/>  <link rel="stylesheet" href="https://pm.pstatic.net/dist/css/nmain.20210601a.css"> <link rel="stylesheet" href="https://ssl.pstatic.net/sstatic/search/pc/css/sp_autocomplete_210318.css"> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?1"/>  <link rel="apple-touch-icon" sizes="114x114" href="https://s.pstatic.net/static/www/u/2014/0328/mma_204243574.png"/> <link rel="apple-touch-icon" href="https://s.pstatic.net/static/www/u/2014/0328/mma_20432863.png"/> 
</pre> #실제 html코드는 너무 길어서 생략
  • 위 html 코드는 Naver 사이트에 접속했을때의 html을 표현한 것

import

  • import를 사용하여 해당 모듈 전체를 import
1
import math
1
math.pi
3.141592653589793
1
math.cos(100)
0.8623188722876839

from import (패키지에서 import 하기)

  • 해당 모듈 패키지에서 특정한 타입의 모듈만 import

  • 이 경우 앞에 모듈명을 입력할 필요 없이 바로 사용할 수 있다.

  • 패키지는 폴더 구조와 같은 것 즉 math라는 모듈 파일 안에 pi라는 패키지, cos라는 패키지 등이 있는 것

위에서는 math라는 모듈 패키지를 불러와서 그 아래 pi라는 세부 모듈을 불러와서 쓴것

1
2
3
from math import pi
from math import cos
#from math import sin
1
cos(100) # math.cos() 라고 쓰지 않아도 된다.
0.8623188722876839

* 임포트

  • 해당 모듈내에 정의된 모든 것을 import

  • 일반적으로 사용이 권장되지 않음

1
2
# sin 모듈 import없이 사용하면 에러가 발생
sin(100)
1
2
# 위에서 이미 불러온 math를 통하면 사용 가능
math.sin(100)
-0.5063656411097588
1
2
# math 모듈내에 정의된 모든 것을 import
from math import *
1
2
# from math import sin 이라고 따로 sin을 불러오지 않아도 사용 가능
sin(100)
-0.5063656411097588
1
math.e
2.718281828459045
1
e
2.718281828459045

* 임포트 를 권장하지 않는 이유?

1
2
3
4
5
from math import *

from a import *

로 2가지 모듈을 불러왔다고 했을때, 위의 예시 처럼 두 모듈에 모두 ‘e’라는 특정 모듈이 있으면 가장 최근에 불러온 모듈의 ‘e’로 덮어 씌워지기 때문이다.

별명(alias) 지어주기 : as

  • 모듈 import 시, alias(별명) 지정가능

  • 보통 패키지 이름이 너무 길때 약어 로 줄여서 사용.

  • 실제 사용을 하다보면 동일 패키지를 계속 적어야 하는 경우가 많아서 편의성을 위해 사용

  • 이 별칭을 지을땐 보통 as 를 붙여준다.

1
import pandas as pd # 판다스 패키지를 불러와서 pd라고 별명 지음
1
pd.DataFrame() # 판다스 패키지로 데이터프레임을 만드는 명령어
  • 주의! : 코드를 다른사람과 공유하거나, 외부에 제출하는 경우가 많기 때문에 본인만 아는 별명 을 사용하는 것은 지양해야 한다.
  • import pandas as pd 에서 ‘pd’는 국룰이다. 범용적으로 쓰이는 alias로 자신만의 편의를 위해 다른 alias를 사용한다면, 다른 사람들이 알아보지 못할 가능 성이 높다.

댓글남기기