빅데이터 분석가 양성과정/Python

Ch07-3 모듈 / 모듈 만들기

황규진 2024. 7. 5. 14:56

모듈을 만드는 법을 알면 직접 모듈을 만들 수 있는 것은 물론이고 다른 사람이 만든 모듈을 분석할 수도 있다.

PI = 3.141592

def number_input():
  output = input('숫자 입력 > ')
  return float(output)

def get_circumference(radius):
  return 2 * PI * radius

def get_circle_area(radius):
  return PI * radius * radius
import module_test as test

radius = test.number_input()
print('원 둘레 :', test.get_circumference(radius))
print('원 면적 :', test.get_circle_area(radius))

숫자 입력 > 3 원 둘레 : 18.849552000000003 원 면적 : 28.274328000000004

  • name=="main"

다른 사람들이 만든 파이썬 코드들을 보면 __name__ == "__main__"이라는 코드를 많이 볼 수 있다. 많은 파이썬 개발자들이 이유도 모르고 그냥 사용하는 경우가 있는데, 이 의미가 무엇인지 자세하게 살펴보겠다.

name

파이썬 코드 내부에서는 __name__라는 변수를 사용할 수 있습니다. __name__이라는 변수에 어떤 값이 들어 있는지 확인해 보겠다.

print(__name__)

프로그래밍 언어에서는 프로그램의 진입점을 "엔트리 포인트"(entry poing) 또는 "메인"(main)이라고 부른다. 그리고 이러한 엔트리 포인트 또는 메인 내부에서의 __name__의 값은 문자열'__main__' 다.

circle.py

PI = 3.141592

def number_input():
  output = input('숫자 입력 > ')
  return float(output)

def get_circumference(radius):
  return 2 * PI * radius

def get_circle_area(radius):
  return PI * radius * radius

print('circle.py에서 __name__ :', __name__)

if __name__ == '__main__':
    n = number_input()
    area = get_circle_area(n)
    print('원의 면적은 :', area)

start.py

import circle as cir

print('start.py에서 __name__ :', __name__)

if __name__ == '__main__':
    radius = cir.number_input()
    print('원 둘레 : ', cir.get_circumference(radius))
    print('원 면적 : ', cir.get_circle_area(radius))

=⇒ circle.py 를 실행했을때 ‘name’은 main 이였다. start.py에서 circle을 임포트해서 가져와서 실행하면 circle.py name은 circle이고 start.py name 이 main 이 된다. 결론은 내가 모듈을 하나 만들어 놓으면 남이 내가 만든걸 쓸때 내가 만들어 놓은 것 밑에 지워야 하는 코드를 지울 필요 없이 (main 일때만 실행하니까) 그대로 사용하면 된다.

모듈을 만드는 법을 알면 직접 모듈을 만들 수 있는 것은 물론이고 다른 사람이 만든 모듈을 분석할 수도 있다.

PI = 3.141592

def number_input():
  output = input('숫자 입력 > ')
  return float(output)

def get_circumference(radius):
  return 2 * PI * radius

def get_circle_area(radius):
  return PI * radius * radius
import module_test as test

radius = test.number_input()
print('원 둘레 :', test.get_circumference(radius))
print('원 면적 :', test.get_circle_area(radius))

숫자 입력 > 3 원 둘레 : 18.849552000000003 원 면적 : 28.274328000000004

  • name=="main"

다른 사람들이 만든 파이썬 코드들을 보면 __name__ == "__main__"이라는 코드를 많이 볼 수 있다. 많은 파이썬 개발자들이 이유도 모르고 그냥 사용하는 경우가 있는데, 이 의미가 무엇인지 자세하게 살펴보겠다.

name

파이썬 코드 내부에서는 __name__라는 변수를 사용할 수 있습니다. __name__이라는 변수에 어떤 값이 들어 있는지 확인해 보겠다.

print(__name__)

프로그래밍 언어에서는 프로그램의 진입점을 "엔트리 포인트"(entry poing) 또는 "메인"(main)이라고 부른다. 그리고 이러한 엔트리 포인트 또는 메인 내부에서의 __name__의 값은 문자열'__main__' 다.

circle.py

PI = 3.141592

def number_input():
  output = input('숫자 입력 > ')
  return float(output)

def get_circumference(radius):
  return 2 * PI * radius

def get_circle_area(radius):
  return PI * radius * radius

print('circle.py에서 __name__ :', __name__)

if __name__ == '__main__':
    n = number_input()
    area = get_circle_area(n)
    print('원의 면적은 :', area)

start.py

import circle as cir

print('start.py에서 __name__ :', __name__)

if __name__ == '__main__':
    radius = cir.number_input()
    print('원 둘레 : ', cir.get_circumference(radius))
    print('원 면적 : ', cir.get_circle_area(radius))

 

=⇒ circle.py 를 실행했을때 ‘name’은 main 이였다. start.py에서 circle을 임포트해서 가져와서 실행하면 circle.py name은 circle이고 start.py name 이 main 이 된다. 결론은 내가 모듈을 하나 만들어 놓으면 남이 내가 만든걸 쓸때 내가 만들어 놓은 것 밑에 지워야 하는 코드를 지울 필요 없이 (main 일때만 실행하니까) 그대로 사용하면 된다.