본문 바로가기
IT 정보

파이썬(python) 패키지(package), 모듈(module), 함수 사용하기

by hong 2021. 3. 23.
반응형

개발을 할 때 한 파일(.py)에 모든 소스 코딩을 하지 않고 모듈(java는 class, 메소드)를 나눠서 만들어 놓은 것을 재사용하기도 하고 가독성을 좋게 만들기 때문에 파이썬에서도 뭐가 있나 봤더니 모듈이라고 해서 나눠서 코딩을 하고 호출을 할 수가 있어서 한번 정리하는 겸 공유드립니다.

 

 

1. 패키지 / 파일 생성

importTest 디렉터리를 생성한후, 디렉터리 안에 아래와 같이 디렉터리들과 파일을 생성.

 

 

 

 

 

2. module1.py

def fncNmA():
    print("fncNmA msg :: fncNmA Call 111 ")

- 모듈 : funcNmA 생성

 

 

3. module2.py

def fncNmB():
    print("fncNmB msg :: fncNmB Call 222 ")

- 모듈 : funcNmB 생성

 

 

4. module3.py

def fncNmC():
    print("fncNmC msg :: fncNmC Call 333 ")

def fncNmD():
    print("fncNmD msg :: fncNmD Call 444 ")

- 모듈 : funcNmC 생성

- 모듈 : funcNmD 생성

 

 

5. __init__.py

- 디렉터리에 __init__ 파일을 생성하면 파이썬은 해당 디렉터리를 패키지로 인식하게 됩니다.

  (파일 안에 코딩은 아무것도 하지 않아도 됩니다)

 

 

6. test.py

import module1
from module2Dir import module2
import module3Dir.module3
import module3Dir.module3 as m3


print("\n------------------")
print("-- module1")
print(module1.__file__)
module1.fncNmA()

print("------------------\n")

print("\n------------------")
print("-- module2")
print(module2.__file__)
module2.fncNmB()

print("------------------\n")

print("\n------------------")
print("-- module3Dir.module3")
print(module3Dir.module3.__file__)
module3Dir.module3.fncNmC()
module3Dir.module3.fncNmD()
print("------------------\n")

print("\n------------------")
print("-- m3")
print(m3.__file__)
m3.fncNmC()
m3.fncNmD()
print("------------------\n")

 패키지 하위에 여러 개의 파일(.py)를 만들고 여러 가지 모듈을 만들어 모듈을 import 하는 여러가지 방법과 import 한 모듈을 사용하는 소스입니다.

 

예약어 설명.

  1. import 모듈명
  2. from 패키지명 import 모듈명
  3. import 패키지명.모듈명
  4. import 패키지명.모듈명 as 별칭
  5. __file__ : 코드가 있는 파일의 위치한 Path를 알려준다

 

 

7. 결과 Log

 

 

  1. module1은 test.py와 같은 디렉터리 importTest에 있어서 import 모듈명으로 선언
  2. module2은 importTest 하위에 moudle2Dir 디렉터리 안에 존재 from 패키지명 import 모듈명으로 선언
  3. module3은 importTest 하위에 moudle3Dir 디렉터리 안에 존재 import 패키지명.모듈명으로 선언
  4. module3Dir.module3의 긴 이름을 as를 이용하여 별칭으로 간단하게 선언

print(모듈.__file__)로 실행한 모듈의 Path을 출력한다.

모듈명.함수로 각 모듈에 코딩해 놓은 print문을 출력 함으로써 함수가 정상 호출되는 것을 확인한다.

별칭.함수로 간단히 함수를 호출 가능하다.

 

개발을 진행하면서 공통적으로 필요한 기능들을 모듈화 시켜서 관리하고 import 하여 재사용을 함으로써 코드의 라인 수도 줄이면서 중복 코드를 줄여서 가독성을 높일 수 있습니다.

 

저도 공부를 하는 겸 정리를 해보려고 하고 있는데.... 항상 실전으로 코드를 보고 실행시켜보고 Log를 찍어서 잘 적용이 되고 있나 확인하면서 개발을 해서.... 설명이 미흡할 수 있습니다... 예제 코드 복사가 가능하니 코드를 복사하고 실행시켜 보시면서 이해하시고 궁금한 게 있으시면 댓글 남겨주세요~~

 

 

 

 

반응형
LIST

댓글