sm 기술 블로그
16. 모듈 / 패키지 / pip install / 외장,내장함수 본문
모듈
함수나 변수 또는 클래스 들을 모아 놓은 파일이다.
극장 모듈 (theater_module.py)
# 일반 가격
def price(people):
print("{0}명 가격은 {1}원 입니다.".format(people, people*10000))
# 조조 할인
def price_morning(people):
print("{0}명 조조 할인 가격은 {1}원 입니다.".format(people, people * 6000))
# 군인 할인
def price_soldier(people):
print("{0}명 군인 할인 가격은 {1}원 입니다.".format(people, people * 4000))
모듈에 세가지 경우의 함수를 정의
1. import
import theater_module
theater_module.price(3) #3명이서 영화보러 갔을 때 가격
theater_module.price_morning(4) #4명이서 영화보러 갔을 때 가격
theater_module.price_soldier(5) #5명이서 영화보러 갔을 때 가격
import theater_module as mv # mv라는 별명을 붙여준거임
mv.price(3)
mv.price_morning(4)
mv.price_soldier(5)
자세한 설명은 주석을 보자
# 출력결과
3명 가격은 30000원 입니다.
4명 조조 할인 가격은 24000원 입니다.
5명 군인 할인 가격은 20000원 입니다.
3명 가격은 30000원 입니다.
4명 조조 할인 가격은 24000원 입니다.
5명 군인 할인 가격은 20000원 입니다.
2. from ~ import
from theater_module import *
price(3)
price_morning(4)
price_soldier(5)
from theater_module import price, price_morning
#쓰고자 하는 함수만 정의
price(5)
price_morning(6)
from theater_module import price_soldier as price
price(5) #군인 할인에 관한 가격을 price라는 별명을 붙여줌
함수만 정의하여 코드가 더 간결해지는 장점이 있다.
# 출력결과
3명 가격은 30000원 입니다.
4명 조조 할인 가격은 24000원 입니다.
5명 군인 할인 가격은 20000원 입니다.
5명 가격은 50000원 입니다.
6명 조조 할인 가격은 36000원 입니다.
5명 군인 할인 가격은 20000원 입니다.
패키지
특정 기능과 관련된 여러 모듈을 하나의 상위폴더에 넣어놓은 것
표준 라이브러리 : 파이썬에서 기본으로 제공하는 라이브러리이며 파이썬 설치시 기본으로 설치된다.
외부 라이브러리 : 개발자가 필요에 의해 개발한 패키지와 모듈의 집합이다.
1. 패키지 만들기
travel이라는 패키지 안에 초기화(__init__.py) , thailand.py , vietnam.py 생성
__init__.py
__all__ = ["vietnam","thailand"]
__all__ : 패키지에 원하는 모듈을 공개한다.
thailand.py
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원")
vietnam.py
class VietnamPackage:
def detail(self):
print("[베트남 패키지 3박 5일] 다낭 효도 여행 60만원")
import로 호출
import travel.thailand
trip_to = travel.thailand.ThailandPackage()
trip_to.detail()
import travel.vietnam
trip_to = travel.vietnam.VietnamPackage()
trip_to.detail()
import로 호출할때는 맨 뒷부분에 모듈이나 패키지만 가능하다. (클래스나 함수는 불가능하다.)
-> import travel.thailand.ThailandPackage 불가(클래스는 정의 불가.)
from ~ import로 호출
from travel.thailand import ThailandPackage # 클래스 호출
trip_to = ThailandPackage()
trip_to.detail()
from travel import vietnam # 모듈 호출
trip_to = vietnam.VietnamPackage()
trip_to.detail()
모듈, 클래스, 함수, 패키지 모두 정의 가능
# 출력결과
[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원
[베트남 패키지 3박 5일] 다낭 효도 여행 60만원
모듈을 직접 실행되는지 확인
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원")
if __name__ =="__main__":
print("Thailand 모듈을 직접 실행")
print("이 문장은 모듈을 직접 실행할 때만 실행 됩니다.")
trip_to = ThailandPackage()
trip_to.detail()
else:
print("Thailand 외부에서 모듈 호출")
위와 같이 if절을 추가하여 모듈이 외부에서 실행되는지 혹은 직접 실행되는지 확인 할 수 있다.
원하는 함수만 정의해서 사용할 수 있다.
모듈이 어디 있는지 알아보기
import inspect
import random
print(inspect.getfile(random)) #random 모듈이 어디있는지 확인할 수 있다.
print(inspect.getfile(thailand)) #thailand 모듈이 어디있는지 확인할 수 있다.
#파일의 위치를 알려준다.
# 패키지를 경로에 넣어줌으로써 다른곳에서 쓰던 패키지를 가져올 수 있다.
pip install
패키지 설치(다른사람이 만들어둔 패키지 사용)
터미널에 pip insatll 패키지명
외장 내장 함수
내장 함수 : 이미 프로그램상에 정의 되어 있는 함수 (ex : input , dir )
외장 함수 : import로 호출을 해서 사용한다.
https://codedrive.tistory.com/91
외장 내장 함수는 굉장히 많기 때문에 유용한건 외우고 나머지는 필요할때 찾아서 쓰자.
'Python' 카테고리의 다른 글
[파이썬 python] 리스트 (0) | 2022.06.04 |
---|---|
[파이썬 Python] 2차원 배열 생성 (0) | 2022.05.30 |
15. 예외처리 (try~except/ 예외 발생 /finally) (0) | 2022.05.08 |
14. 텍스트 스타크래프트 (0) | 2022.05.08 |
13. 파일 입출력 / pickle / with (0) | 2022.05.05 |