study with Q - 파이썬

90 - (파이썬) 모듈 만들기

quaquaz 2024. 9. 19. 19:36

#모듈

: 파일 또는 폴더를 활용해서 구성하게 된다

 

import 모듈이름

→ 파이썬은 위와 같은 코드를 사용하게 되면 현재 실행하고 있는 파일이 있는 위치에서 "모듈이름"이라는 파일 또는 폴더가 있는지 확인한다. (모듈이름과 같은 이름의 파일을 만들어서 사용하면 오류가 발생한다.) 같은 이름의 파일/폴더가 없ㅇ면 환경 변수에 등록되어 있는 추가적인 위치에서 확인한다.

 

eg) 

import sys라는 이름의 모듈이 현재 위치레 있는 곳이 아니다. > 환경 변수라는 곳에 설정되어 있는 위치에 있다.

→ 시스템 모듈에 path라는 변수를 출력해보면 환경 변수에 어떠한 위치가 기록되어 있는지 확인 가능

더보기
import sys
print(sys.path)
>>>
['/home/runner/number2', '/nix/store/v118v4fxlkr24l0cq9mmjdaqivkyzbv8-sitecustomize/lib/python/site-packages', '/nix/store/lq49pw9pmqj715hd6qjwlyap185x3yrl-python3.10-pip-24.0/lib/python3.10/site-packages', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python310.zip', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10/lib-dynload', '/home/runner/number2/.pythonlibs/lib/python3.10/site-packages', '/nix/store/418nyl05dzqb57brvqjd1g22p27xyqbq-python3-3.10.14/lib/python3.10/site-packages', '/home/runner/number2/.pythonlibs/lib/python3.10/site-packages', '/nix/store/bz7zjmjxakwwryc06g7zlv50nfvig04i-python3.10-setuptools-72.1.0/lib/python3.10/site-packages']

# 모듈 만들기

file에 hellolodule.py라는 파일을 만들고 파일 안에

a = 10
def b():
  return 300
class C:
  pass

라고 변수, 함수, 클래스를 만든 뒤에 main.py에서 불러오면 다음과 같이 나온다.

import hellolodule
print(hellolodule.a)
print(hellolodule.b)
print(hellolodule.C)
>>>
10
<function b at 0x7f8cbeebf880>
<class 'hellolodule.C'>

 

other eg) 

hellolodule.py에 다음과 같은 클래스를 만들고

class Circle:
  def __init__(self, 반지름):
    if 반지름 < 0:
      raise ValueError()
    self.__원주율 = 3.14
    self.__반지름 = 반지름
  def 넓이(s):
    return s.__원주율 * s.__반지름**2
  def 둘레(s):
    return 2* s.__원주율 * s.__반지름

 

main.py에서는 아래와 같이 코드를 작성하면

from hellolodule import Circle #또는 import hellolodule as h
c = Circle(100) #또는 c = h.Circle(100)
print(c.넓이())
print(c.둘레())
>>>
31400.0
628.0

 

서클모듈을 조금 더 간단한 형태로 사용 가능하며 실제 활용하는 클래스나 함수, 변수가 분리되기 때문에 코드 실행 부분이 매우 간단해짐을 볼 수 있다.

 

__name__ 이라는 변수

: 현재 파일이 자신이 메인으로 실행되는지 모듈로 실행되는지 구분할 때 사용하는 변수

 

# if __name__ == "__main__"

: 모듈 코드 내부에서 확인할 때 사용

 

eg) 위에서 모듈인 hellolodule.py에 아래와 같은 코드를 만들고 실행해도 검증 관련 내용은 실행되지 않음

if __name__ == "__main__":
  print("넓이()를 검증")
  if Circle(10).넓이 == 314 - 10**-7 :
    print("넓이() 검증 성공: Success")
  else:
    print("넓이() 검증 실패: Fail")
  print("둘래()를 검증")
  if Circle(10).둘레 == 62.8 - 10**-7 :
    print("길이() 검증 성공: Success")
  else:
    print("길이() 검증 실패: Fail")

 

※ 가독성과 유지보수성을 위한 수정을 할 때 테스트가 유용하게 활용된다.