sm 기술 블로그

16. 모듈 / 패키지 / pip install / 외장,내장함수 본문

Python

16. 모듈 / 패키지 / pip install / 외장,내장함수

sm_hope 2022. 5. 8. 20:51
모듈
함수나 변수 또는 클래스 들을 모아 놓은 파일이다.

 

극장 모듈 (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
패키지 설치(다른사람이 만들어둔 패키지 사용)

 

https://pypi.org/

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

터미널에 pip insatll 패키지명


외장 내장 함수

내장 함수 : 이미 프로그램상에 정의 되어 있는 함수 (ex : input , dir )

 

외장 함수 : import로 호출을 해서 사용한다.


https://codedrive.tistory.com/91

 

[Python 따라하기]10. 내장함수와 외장함수(filter,map,random)

2019/01/29 - [Language/Python] - [Python 따라하기]1. Python 설치하기 2019/02/05 - [Language/Python] - [Python 따라하기]2. 자료형_part 1(String, Int,Float, List) 2019/02/12 - [Language/Python] - [Pyt..

codedrive.tistory.com

외장 내장 함수는 굉장히 많기 때문에 유용한건 외우고 나머지는 필요할때 찾아서 쓰자.

Comments