모듈(module): 파이썬 파일(.py)
변수, 함수, 클래스들이 정의된 스크립트 파일 !!
패키지(package): 파이썬 모듈들을 관련된 기능들끼리 모아서 저장한 폴더
(기본) 패키지/ 모듈 (이외)의 기능들을 사용할 때 import 구문을 사용함
import 모듈이름
from 모듈이름 import 기능(변수, 함수, 클래스 이름)
from 패키지이름 import 모듈이름
# 파이썬은 여러가지 수학 함수들과 상수들을 정의한 math 모듈이 있음.
import math
# math.py 파일 안에 정의된 함수들과 상수들을 정의할 수 있음
# from 모듈 import 변수/함수
from math import pi # math.pi 라고 할 필요가 없음
print(pi)
print(sqrt(2))
실행 결과
3.141592653589793
1.4142135623730951
from math import *
이렇게 쓰면 모든 함수를 이용가능하지만
변수 오버라이딩 등의 원인으로 오류가 발생할 가능성이 높아지므로 권장되지 않는다.
# import .. as 별명
import numpy as np # 디렉토리에 별명
from math import pi as PI # 변수에 별명
현재 파일 디렉토리 상황
"""
mymath01.py
"""
pi = 3.14
def add(x : int, y: int) -> int:
"""
두 정수 x, y가 주어졌을 때, x + y 를 리턴하는 함수
:param x: 정수(int)
:param y: 정수(int)
:return: x + y
"""
return x + y
def subtract(x: int, y: int) -> int:
"""
두 정수 x, y가 주어졌을 때, x - y 를 리턴하는 함수
:param x: 정수(int)
:param y: 정수(int)
:return: x - y
"""
return x - y
print('pi =', pi)
print('add =', add(1, 2))
print('sub =', subtract(1, 2))
실행 결과
pi = 3.14
add = 3
sub = -1
"""
module03.py
"""
# utils 패키지(폴더, 디렉토리) 안에 있는 mymath1 모듈(파이썬 파일)의
# 변수, 함수들을 사용
# import 모듈이름
# from 모듈이름 import 변수/함수, ...
# from 패키지, import 모듈이름
import utils.mymath01
import utils.mymath01
실행 결과 -> module03.py를 실행했는데 mymath01.py가 실행됨
pi = 3.14
add = 3
sub = -1
-> import한 파일이 첫 시작에서 한 번 실행된다.
-> 두 번째 import에서는 실행되지 않는다
"""
mymath01.py
"""
print(__name__)
print('pi =', pi)
print('add =', add(1, 2))
print('sub =', subtract(1, 2))
mymath01.py 실행 결과 # 자기 파일을 실행했을 때
__main__
pi = 3.14
add = 3
sub = -1
module03.py 실행결과
utils.mymath01 # 자기 파일명을 출력해줌
pi = 3.14
add = 3
sub = -1
"""
module03.py
"""
import utils.mymath01
print('pi = ', utils.mymath01.pi) # import 방식에 따라 변수를 불러오는 방법이 달라짐
module03.py 실행결과 # 파일 전체가 실행된다
pi = 3.14
add = 3
sub = -1
pi = 3.14
"""
module03.py
"""
from utils.mymath01 import pi
print('pi = ', pi) # import 방식에 따라 변수를 불러오는 방법이 달라짐
module03.py 실행결과 # 파일 전체가 실행된다
pi = 3.14
add = 3
sub = -1
pi = 3.14
"""
mymath01.py
"""
if __name__ =='__main__':
print(__name__)
print('pi =', pi)
print('add =', add(1, 2))
print('sub =', subtract(1, 2))
해당 코드를 mymath01.py에 추가
mymath01.py 실행 결과 # 자기 파일을 실행했을 때
__main__
pi = 3.14
add = 3
sub = -1
module03.py 실행결과 # import한 파일에서는 코드가 실행되지 않음
3.14
"""
mymath02.py
"""
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
if __name__ == '__main__':
print('multiply = ', multiply(1, 2))
print('divide = ', divide(1, 2))
mymath02.py 실행결과
multiply = 2
divide = 0.5
numpy는 폴더명, numbers, enum은 파일명
from ~ import 구문을 이용해 함수까지 가져올 수 있다.
print(mymath01.pi)
print(mymath02.divide(10, 20))
module04.py 실행 결과
3.14
0.5
__init__.py
패키지에 대한 설명과 설정을 담당하는 파일
다른 모듈에서 패키지이름을 import했을 때 공개할 모듈이름들을 설정할 수 있음.
"""
utils.__init__.py
"""
__all__ = ['mymath01'] # from 패키지 import * 구문에서 공개할 이름들의 리스트
"""
module05.py
"""
from utils import *
# from 패키지 import * 에서 import되는 모듈 이름들은
# 패키지 폴더의 __init__.py 파일의 __all__ 변수에 설정된 모듈 이름들임
print(mymath01.pi)
print(mymath02.multiply(11, 12))
module05.py 실행 결과
"""
utils.__init__.py
"""
# import 패키지 구문에서 공개할 모듈 이름들의 리스트
from . import mymath02
"""
module05.py
"""
import utils
print(utils.mymath02.divide(1,2))
# import 패키지 구문을 사용하면
# 패키지 폴더의 __init__.py 파일에서 미리 import한 모듈 이름들을 사용할 수 있음
<상대경로>
. : 현재 폴더
. . : 상위 폴더
import 가 중요하다.
from numpy import random
print(random.randint(1, 5))
import 뒤에 있는 이름을 가져오는 것이다. 다음과 같이 사용해야 한다
import numpy
print(numpy.random.randint(1, 5))
'Python > Python기초' 카테고리의 다른 글
Python 26_class 설계 + __**__ 더블 언더스코어 메소드 (0) | 2019.12.25 |
---|---|
Python 25_ 객체지향프로그래밍, class (0) | 2019.12.24 |
Python 23_ Error, Exception (0) | 2019.12.20 |
Python 22_ 함수의 람다 표현식(lambda expression) (0) | 2019.12.19 |
Python 21_ 함수의 저장 (0) | 2019.12.18 |