Python: Module

0

압축 Python

목록 보기
6/11
post-thumbnail

모듈

여러 변수와 함수를 가지고 있는 집합체.

  • 표준 모듈
    • built-in
    • Python을 설치할 때 함께 설치되는 내장 모듈

  • 외부 모듈
    • 사용자가 직접 변수와 함수를 섞어서 공개한 집합체

사용

import 모듈 이름
  • 스크립트(*py 파일) 상단에 위와 같은 형식으로 Python 파일을 불러오는 개념

  • import로 가져온 코드 내의 변수 함수 등을 사용할 수 있게 된다

  • 따라서 어떠한 Python 파일이든 모듈이 될 수 있다


설치

Python Install Package: pip를 사용한다

pip install 패키지 이름

만들기

  • 단순히, Python 파일을 만들고 이를 외부에서 읽어들이면 모듈이 된다
  • 변수와 함수를 잔뜩 넣으면 그게 모듈이 된다
  • 복잡하고 구조화된 모듈을 만들 때는 패키지라는 기능을 사용
    (패키지는 이후 다루게 된다)

엔트리 포인트

프로그램의 진입점을 의미한다.

__name__

Python 코드 내부에서 __name__이라는 변수를 사용할 수 있다.

__name__은 해당 모듈의 이름을 가지고 있는 변수

앞서 언급된 것처럼 -거의- 모든 Python 파일들은 다른 파일에서 import함으로써 모듈이 될 수 있다.


모듈의 __name__

이게 뭔지는 직접 코드를 짜보면 알 수 있다.

*hello.py*

print('hello 모듈 시작')
print('hello.py의 __name__:', __name__)	# __name__ 변수 출력
print('hello 모듈 종료')

>> 실행 결과:
hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝

이 파일을 다른 파일에 import 시키는 게 아닌, 단독으로 실행했을 때는 이 파일 자체가 프로그램의 시작점이다. 최초로 실행했기 때문이다.

따라서 __name__은 '__main__'을 뱉어내게 된다.

hello.py 파일을 다른 Python 파일(main.py)에서 import 해보겠다.

*main.py*

# import 시에 .py는 생략한다
import hello

print('main.py의 __name:', __name__)	#__name__ 변수 출력

>> 실행 결과:
hello 모듈 시작
hello.py __name__: hello
hello 모듈 끝
main.py __name__: __main__

hello.py의 함수들이 먼저 실행되는 것을 볼 수 있다.

Python에서 import를 통해 모듈을 가져올 때, 가져온 스크립트 파일이 한 번 실행된다.

따라서 import를 선언한 후 최초로 실행할 때 hello.py가 한 번 실행된 것이다.

hello.py는 main.py에 import된 것일 뿐이고, 실행은(프로그램의 시작은) hello.py에서 일어났기 때문에 __name__ 변수에는 'hello'가 들어가 있다.

이를 응용하는 하나의 코드를 더 볼 수 있다.

*hello.py* 수정

if __name__ == '__main__':
    print("hello 모듈 시작")
    print("hello.py __name__:",__name__)    # __name__ 에는 'hello'가 들어가있다
    print("hello 모듈 끝")
    
>> 실행 결과:
hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝

hello.py에서 실행했으며 여기서 최초로 프로그램이 시작되었기에 __name__은 '__main__'이 된다.

이에 따라 if문이 실행되었다.

하지만 만약 main.py에서 이 파일을 import하여 실행한다면?

*main.py*

# import 시에 .py는 생략한다
import hello

print('main.py의 __name:', __name__)	#__name__ 변수 출력

>> 실행 결과:
main.py __name__: __main__

hello.py의 함수가 실행되지 않는다. hello.py의 __name__은 'hello'가 되고 If문의 조건을 만족하지 않기 때문이다.

__name__은 위와 같이 활용할 수 있다.


0개의 댓글