겉바속촉

[PYTHON] 파이썬_모듈화 방식 본문

IT 일기 (상반기)/PYTHON

[PYTHON] 파이썬_모듈화 방식

겉바속촉 2021. 1. 5. 11:14
728x90
반응형

 

안녕하세요

겉바속촉입니다

!^^!

 

 

!!파이썬 시작하기!!

 

 

 

 

이번에는

모듈화 방식으로

프로그램을 어떻게 구성하는 지

알아보도록 하겠습니다

 

 

 

 

 

 


 

 

 

 

모듈 임포트

 

모듈

  • 한 파일로 묶인 변수와 함수의 컬렉션
  • 모듈 내 변수와 함수에 접근하려면 임포트 필요
  • 모듈을 임포트하면 모듈과 같은 이름의 변수가 생성

 

 

다음 예시는 math를 import한 것!!

type을 보니 module이라고 나오네요?!

 

 

help(math)도 가능합니다

 

 

여러가지 함수 중에서 sqrt()를 사용해볼게요

그냥 sqrt(9)는 출력이 안되고

math.sqrt(9)라고 해주어야 출력이 됩니다:) 

 

즉, math 모듈 내에서 sqrt 함수를 찾도록 명령해주어야하는 거쥬!

마지막 명령 보면 math.pi라고 해주었는 데 모듈 내에 변수를 직접 할당하는 것은 권장하지 않습니다

 

 

 

 

 

import *

  • 모듈 내 모든 요소를 한 번에 전부 임포트
  • 프로그램이 부정확한 함수에 접근하거나 올바르게 동작하지 않을 위험이 있어서 일반적으로 사용 no

 

 

_builtins_ 모듈

  • 파이썬 내장 함수
  • ex) len(), input(), print() ......

 

 

 


 

 

 

사용자 정의 모듈

 

sample.py 라는 파일을 만들어주었습니다:)

다음과 같이 내용 입력 후 실행하면 abcd라고 뜹니다

 

 

 

이제 파이썬 쉘에서 작업해볼게요

import 해올 때는 내가 만든 모듈을 그대로 불러와야하기때문에 이름 동일하게 줄 것!!

 

파이썬은 모듈을 임포트하자마자 바로 실행됩니다 --> 그래서 바로 abcd가 출력

 

 

근데 또 import하면 실행이 안됩니다:)

처음 import 할때에 실행되면서 이미 메모리 상에 구조가 만들어졌기 때문에

그 구조를 그냥 재활용할 뿐 중복해서 로그하지 않습니다.

 

파이썬은 처음 임포트할때만 모듈 로드, 중복해서 하지 않는다!

 

 

 

 

모듈을 한 번 수정해볼게요:)

그리고 다시 import하면 어떨까요??

반영이 되지 않습니다ㅠㅠㅠ

 

 

그래서 importlib를 활용

importlib.reload(sample) 까지 해주시면 바뀐 내용이 반영되어 출력됩니다

 

 

 


 

 

__main__

 

  • 임포트할 때 실행할 코드 선택하고 싶다면 활용
  • 어떤 코드에 대해서는 모듈을 직접 실행할 때만 실행되고, 임포트할때는 실행되지 않게끔 하는 경우들

 

 

이번에는 다음과 같이 echo.py 명의 파일을 다음 내용 입력 후 실행

print("__name__ is", __name__)

__name__ is __main__ 라고 출력이 됩니다

 

이것은 바로  __name__ 변수에 "__main__" 이 값으로 할당된 것입니다

( __name__은 파이썬 모듈 내에 특수 문자열 변수입니다. 즉 정의하지 않아도 사용가능한 변수!! )

 

 

그런데 이번에는 파이썬 쉘에서 실행하면서 import를 해볼게요

이제는 __name__is echo  라고 출력이 됩니다

 

 

그럼 다음과 같이 입력해볼게요

즉 그냥 __name__ 을 입력하면 __main__ 이라고 나오고   ===> shell에서 출력되어서

echo.__name__ 을 입력하면 echo 라고 나오고 있네요   ===> echo 모듈이 호출되어 echo가 가진 변수가 출력

 

 

 

확실하게 더 짚고 넢어가기 위해서

 

이제 다음과 같이 코드 작성

 

if __name__ == "__main__" :
    print("I am the main program.")

else:
    print("Another module is importing me.")

 

 

그럼 그냥 실행시켜보면 다음과 같이 결과 출력

 

그리고 파이썬 접속해서 import 로 호출해서 실행

 

 

 

오호... 신기하네요!!

 

 

 

728x90
반응형