롸?
모듈 본문
1. 모듈
모듈이란 함수나 변수 또는 클래스를 모아놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.
- 모듈 만들기
# mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a-b
위와 같이 함수만 있는 파일을 만들고 저장하면 이 mod1.py파일이 모듈이 된다.
파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다.
- 모듈 사용
import mod1
print(mod1.add(3, 4)) #7
print(mod1.sub(4, 2)) #2
import는 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다. 파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말한다.
때로는 mod1.add, mod1.sub처럼 쓰지 않고 add, sub처럼 모듈 이름 없이 함수 이름만 쓰고 싶은 경우도 있을 것이다. 이럴 때는 "from mod1 import add, sub"를 사용하면 된다.
2. __main__
파이썬 코드를 보다보면 if __name__ == '__main__': 으로 시작하는 부분을 자주 볼 수 있다. 먼저 __name__에 대해서 알아보자
먼저 프로젝트 폴더 내에 hello.py 파일을 생성한다.
print('hello 모듈 시작')
print('hello.py __name__ : ', __name__)
print('hello 모듈 끝)
그리고 다음 코드의 main.py를 생성한다.
import hello #hello 모듈을 가져옴
print('main.py __name__ : ', __name__)
그리고 main.py를 실행하면 다음과 같은 결과를 볼 수 있다.
hello 모듈 시작
hello.py __name__ : hello
hello 모듈 끝
main.py __name__ : __main__
임포트 된 hello의 __name__은 hello, 직접 실행한 main은 __main__으로 뜨는 것을 확인할 수 있다. 즉, __name__은 모듈의 이름이 저장되는 변수이며 임포트로 모듈을 가져올 경우 모듈의 이름이 들어간다.
다시 말하자면 hello.py를 직접 실행한다면 __name__의 결과로 __main__이 뜨는 것이다.
어떤 스크립트 파일이든 파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__은 __main__이 들어가고 이는 프로그램의 시작점이라는 뜻이다.
파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없다. 어떤 스크립트 파일이든 시작점도 될 수 있고, 모듈도 될 수 있다. 그래서 __name__변수를 통해 현재 스크립트 파일이 시작점인지 아닌지를 판단하는 것이다.
파이썬은 왜 프로그램의 시작점이 정해져 있지 않나요?
파이썬이 처음에 개발 될 당시에는 리눅스/유닉스에서 사용하는 스크립트 언어 기반이었기 때문에 프로그램의 시작점이 따로 정해져 있지 않았습니다. 보통 리눅스/유닉스의 스크립트 파일은 파일 한 개로 이루어진 경우가 많은데, 이 스크립트 파일 자체가 하나의 프로그램이다 보니 시작점이 따로 필요하지 않습니다. 하지만 C 언어나 자바같은 언어는 처음 만들어질 때부터 소스 파일을 여러 개 사용했기 때문에 여러 소스 파일의 함수들 중에서도 시작 함수(main)를 따로 정해 놓았습니다.
참고
'프로그래밍 > Python' 카테고리의 다른 글
DB연동 (mariaDB) (0) | 2020.05.13 |
---|---|
파일 입출력 (0) | 2020.05.13 |
클래스 (0) | 2020.05.08 |
함수, lambda (0) | 2020.05.07 |
클로저 (0) | 2020.05.07 |