-
모듈과 패키지 만들기Python 2023. 10. 30. 16:27
모듈 만들기
# square2.py base = 2 # 변수 def square(n): # 함수 return base ** n
모듈 사용
# main.py # import 모듈 # 모듈.변수 # 모듈.함수() import square2 print(square2.base) print(square2.square(10)) # 실행 결과 2 1024
from import로 변수, 함수 가져오기
# from 모듈 import 변수, 함수 from square2 import base, square print(base) print(square(5)) # 실행 결과 2 32
모듈에 클래스 작성
# person.py class Person: # 클래스 def __init__(self, name, age, addr): self.name = name self.age = age self.addr = addr def greeting(self): print('안녕하세요. 저는 {}입니다.'.format(self.name)) # main.py import person maria = person.Person('마리아', 20, '수원') maria.greeting() # 실행 결과 안녕하세요. 저는 마리아입니다.
from import로 클래스 가져오기
from person import Person james = Person('제임스', 20, '제주') james.greeting() # 실행 결과 안녕하세요. 저는 제임스입니다.
모듈과 시작점 알아보기
if __name__ == '__main__': 코드
위 코드를 사용하는 이유?
# __name__ # hello.py print('hello 모듈 시작') print('hello.py __name__:', __name__) # name 변수 출력 print('hello 모듈 끝') # main.py import hello print('main.py __name__:', __name__) # __name__ 변수 출력 # 실행 결과 hello 모듈 시작 hello.py __name__: hello hello 모듈 끝 main.py __name__: __main__
실행해 보면 hello.py 파일과 main.py 파일의 __name__ 변숫값 출력
파이썬에서 import로 모듈 가져오면 해당 스크립트 파일이 한 번 실행
어떤 스크립트 파일이든 파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__에는 '__main__'이 들어감
> 프로그램의 시작점(entry point)
파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없음
어떤 스크립트 파일이든 시작점이 될 수도 있고, 모듈도 될 수 있음
> __name__ 변수를 통해 현재 스크립트 파일이 엔트리 포인트인지 모듈인지 판단
if __name__ == '__main__': 코드
> 현재 스크립트 파일이 프로그램의 엔트리 포인트가 맞는지 판단하는 작업
> 스
스크립트 파일로 실행하거나 모듈로 사용하는 코드 만들기
# clac.py def add(a, b): return a + b def mul(a, b): return a * b if __name__ == '__main__': print(add(10, 20)) print(mul(10, 20))
# 터미널 창 실행 결과 PS C:project\basic> python clac.py 30 200 PS C:project\basic> py >>> import clac >>> >>> clac.add(50, 60) 110 >>> clac.mul(50, 60) 3000 >>>
import clac에서 30, 200이 출력되지 않은 이유는 main이 아니기 때문
패키지 만들기
패키지 폴더 구성
project
> main.py
> calcpkg
> __init__.py
> operation.py
> geometry.py
# __init__.py 파일은 내용을 비워 둘 수 있음
파이썬 3.3 이상부터는 __init__.py 파일이 없어도 패키지로 인식되지만 하위 버전에도 호환되도록 작성 권장
패키지에 모듈 만들기
# operation.py def add(a, b): return a + b def mul(a, b): return a * b # geometry.py def triangle_area(base, height): return base * height / 2 def rectangle_area(width, height): return width * height
패키지 사용
# import 패키지.모듈 # 패키지.모듈.변수 # 패키지.모듈.함수() # 패키지.모듈.클래스() import calcpkg.operation import calcpkg.geometry print(calcpkg.operation.add(10, 20)) print(calcpkg.operation.mul(10, 20)) print(calcpkg.geometry.triangle_area(30, 40)) print(calcpkg.geometry.rectangle_area(30, 40)) # 실행 결과 30 200 600.0 1200
from import로 패키지의 모듈에서 변수, 함수, 클래스 가져오기
from 패키지.모듈 import 변수
from 패키지.모듈 import 함수
from 패키지.모듈 import 클래스
>>> from calcpkg.operation import add, mul >>> add(10, 20) 30 >>> mul(10, 20) 200
모듈과 패키지를 찾는 경로
>>> import sys >>> sys.path ['', 'C:\\Users\\user\\anaconda3\\python311.zip', 'C:\\Users\\user\\anaconda3\\DLLs', 'C:\\Users\\user\\anaconda3\\Lib', 'C:\\Users\\user\\anaconda3', 'C:\\Users\\user\\anaconda3\\Lib\\site-packages', 'C:\\Users\\user\\anaconda3\\Lib\\site-packages\\win32']
패키지에서 from import 응용
from . import 모듈
# __init__.py from . import operation # 현재 패키지에서 모듈을 가져옴 from . import geometry # . < 현재 패키지라는 뜻
. < 현재 폴더
.. < 상위 폴더
# main.py import calcpkg # calcpkg 가져오기 # import calcpkg.operation # import calcpkg.geometry print(calcpkg.operation.add(10, 20)) print(calcpkg.operation.mul(10, 20)) print(calcpkg.geometry.triangle_area(30, 40)) print(calcpkg.geometry.rectangle_area(30, 40)) # 실행 결과 30 200 600.0 1200
'Python' 카테고리의 다른 글
파이썬 기초와 Ipython, jupyter notebook (0) 2023.10.31 웹의 데이터로 그래프 그리기 (0) 2023.10.31 모듈과 패키지 사용 (0) 2023.10.30 정규표현식 (0) 2023.10.25 데코레이터(장식자) (0) 2023.10.25