2의 거듭제곱을 만드는 모듈을 만들었다.
파일명은 square2.py이다.
이 때 확장자 .py를 제외한 square2가 모듈 이름이다.
base = 2
def square(n):
return base ** n
모듈을 사용하는 데 두가지 방법이 있다.
import 모듈
import 모듈 as 이름
import square2 # import로 square2 모듈을 가져옴
print(square2.base) # 모듈.변수 형식으로 모듈의 변수 사용
print(square2.square(10)) # 모듈.함수() 형식으로 모듈의 함수 사용
import로 모듈을 가져온 뒤 모듈.변수, 모듈.함수() 형식으로 사용한다.
import math
print(math.pi) #3.141592653589793
print(math.sqrt(5)) #2.23606797749979
각각 모듈.변수, 모듈.함수() 형식으로 사용했다.
import math as m
print(m.pi) #3.141592653589793
print(m.sqrt(5)) #2.23606797749979
print(m.ceil(3.12)) #4
모듈에 함수 뿐 아니라 클래스를 작성하고 불러올 수도 있다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greeting(self):
print('{0}, {1}'.format(self.name,self.age))
import person
JK = person.Person('JK', 26)
JK.greeting() #JK,26
from 모듈 import 변수,함수
from 모듈 import 변수/함수/클래스 as 이름
모듈에서 from import로 변수와 함수를 가져온 뒤 모듈 이름을 붙이지 않고 사용하는 방식이다.
from square2 import base, square
print(base)
print(square(10))
from math import pi
print(pi) #3.141592653589793
#print(math.ceil(3.12)) #NameError: name 'math' is not defined
#print(ceil(3.12)) #NameError: name 'ceil' is not defined
from math import *
print(pi) #3.141592653589793
print(ceil(3.12)) #4
# print(math.ceil(3.12)) #NameError: name 'math' is not defined
from math import ceil as ce, sqrt as sq
print(ce(4.3)) #5
print(sq(4)) #2.0
#print(PI) #NameError: name 'PI' is not defined
#print(math.PI) #NameError: name 'math' is not defined
from import에서도 마찬가지로 클래스를 불러올 수 있다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greeting(self):
print('{0}, {1}'.format(self.name,self.age))
from person import Person
JK = Person('JK', 26)
JK.greeting()
__init__.py
파일이 있어야 함packtest/
main.py
math_tools/
__init__.py
calculator.py
geometry/
__init__.py
shapes.py
위와 같은 구조로 디렉터리와 모듈을 만들어보자.
math_tools에 calculator 모듈을 만들었고
geometry라는 서브 디렉터리를 추가하여 shapes 모듈을 만들었다.
#calculator.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
#shapes.py
import math
def rectangle_area(width, height):
return width * height
def circle_area(radius):
return math.pi * radius ** 2
# __init__.py
빈 파일
#main.py
from math_tools import calculator
from math_tools.geometry import shapes
result = calculator.add(2, 3)
print("2 + 3 =", result)
rect_area = shapes.rectangle_area(5, 6)
print("Rectangle area (5, 6) =", rect_area)
circle_area = shapes.circle_area(3)
print("Circle area (radius=3) =", circle_area)
이 때 메인함수에서
from math_tools import calculator
는 math_tools 디렉터리의 calculator 모듈을 가져오고
from math_tools.geometry import shapes
는 math_tools디렉터리의 geometry 서브 디렉터리에 있는 shapes 모듈을 가져온다는 뜻이다.
메인함수에서
from math_tools.geometry import shapes
이 아닌
import math_tools.geometry.shapes
으로 사용할 수도 있으나, 모듈을 사용할 떄 전체 경로를 지정해야하므로 몹시 귀찮아진다.
from math_tools import calculator
import math_tools.geometry.shapes
result = calculator.add(2, 3)
print("2 + 3 =", result)
rect_area = math_tools.geometry.shapes.rectangle_area(5, 6)
print("Rectangle area (5, 6) =", rect_area)
circle_area = math_tools.geometry.shapes.circle_area(3)
print("Circle area (radius=3) =", circle_area)