본문으로 바로가기

Python: Module

category Programming/Python 2021. 1. 28. 14:46
반응형

작년 11월, 파이썬에 관한 글을 시리즈로 작성하기 시작하면서 순수하게 파이썬을 주제로 총 25개의 글을 작성하였다. 그리고, 이번 글을 끝으로 파이썬의 기초적인 내용에 대한 시리즈를 마무리하려고 한다. 이후로는 PLC처럼 간간히 관련된 내용이나 응용에 관한 부분은 한번씩 포스팅할 예정이다.
이런저런 일 처리로 인해 빠진 시간들을 뺀다면, 파이썬의 기초 파트의 시리즈 작성에 한 달 정도의 시간이 소요된 것 같다. 그 정도로 파이썬은 어렵지 않게 접근할 수 있는 언어라는 생각이 든다. 그래서, 아직 파이썬의 매력을 느껴보지 못한 주변 지인들에게 적극적으로 권유해볼 생각이다. ㅎㅎ

각설하고, 오늘 포스팅할 내용은 모듈에 관한 내용이다. 네이버 어학사전에서 Module을 찾아보면, 그냥 뜻 자체가 모듈이라고 나올 정도로 모듈은 실생활에서 많이 사용되는 단어이다. 주로 조립 부품을 지칭할 때 모듈이라는 단어를 많이 쓰는 만큼, 파이썬에서의 모듈 역시 하나의 프로그램을 구성하는 작은 프로그램의 단위 정도로 해석할 수 있을 것이다.
지금까지는 하나의 파이썬 파일에서 변수도 정의하고, 펑션도 만들어서 호출하고, 클래스도 생성하는 등의 작업들을 해왔다. 만약, 파이썬을 이용해서 사이즈가 큰 어플리케이션을 구현해야 할 때, 하나의 파이썬 파일에 필요한 변수, 펑션, 클래스 등을 꾸역꾸역 만들어서 구현한다면 무지막지하게 길어진 프로그램 코드를 마주하게 될 것이고, 길이가 길어진만큼 상당히 복잡해진 코드를 만들어내게 될 것이다. 한 마디로, 비효율적인 노가다의 산물이라는 소리이다.
펑션이나 클래스를 만들어서 사용하는 것 자체가 반복되는 코드를 재사용함으로써 프로그래밍을 경제적으로 만들어주기 위함도 있지만, 복잡한 문제를 여러 작은 문제로 나눠서 구현하기 위함도 있다. 하나의 크고 복잡한 문제를 통으로 생각하는 것 보다는 여러 작은 문제들로 나눠서 각개 격파한 다음, 그 결과물들을 조합하는 것이 보다 효율적으로 문제를 풀어나가는데 도움이 되기 때문이다.
그렇다면, 펑션이나 클래스 등을 통해 나누어진 작은 문제들을 아예 독립적인 파일로 구현하고, 메인 파일에서 이들을 불러 모을 수 있다면, 불필요하게 코드가 길어지는 결과를 막을 수도 있다. 여기에 추가로, 특정 기능만을 수행하도록 만들어진 파일만 다른 사람들과 공유함으로써 더욱 생산적인 프로그래밍도 가능하게 만들어 줄 수 있다.
파이썬은 지금까지 이야기한 내용을 모듈이라는 형태로 지원한다. 다시 말해, 지금까지 파이썬을 공부하면서 학습했던 변수나 펑션, 그리고 클래스 등을 모아 놓은 파일이라는 의미이다.

위 그림과 같이 간단한 파이썬 코드가 작성된 TestModule.py라는 파일을 하나 만들어보자. 이 파일에는 fcHelloWorld라는 펑션 하나와 문자열을 저장하고 있는 변수 하나가 정의되어 있다. 그리고, 이런 아주 단순한 파이썬 코드를 담고 있는 모듈 하나가 지금 막 생성되었다.
앞에서 이야기했듯이, 파이썬에서 사용하는 변수나 펑션, 그리고 클래스 등을 모아 놓은 파일이 바로 모듈이다. 그래서, 모듈을 만든다고 해서 따로 거창한 무엇인가를 할 필요 없이, 위 그림처럼 일반적인 파이썬 코드를 파일로만 저장하면 그 즉시 하나의 모듈이 탄생한다는 말이다.

다른 파이썬 코드에서 만들어진 모듈을 사용하기 위해서는 불러오는 작업을 먼저 해주어야 한다. 이 때, import라는 키워드가 사용된다. 위 그림은 방금 전에 만든 TestModule.py 모듈을 사용하는 예로, 프로그램의 시작 부분에서 import 키워드와 함께 TestModule을 불러오고 있다. 이 때, 모듈을 저장한 파일의 이름을 import 뒤에 붙여주면 된다.
1번 코드 라인의 import가 성공적으로 처리되면, TestModule 안에 정의된 변수와 펑션 등을 호출해서 사용할 수 있다. 단, 호출을 위해서는 그림과 같이 모듈의 이름을 앞에 붙여주어야 된다.

개인적으로는 외부 모듈에서 펑션 등을 호출해서 사용할 때, 메인 프로그램 내부의 변수나 펑션들과 혼돈되지 않도록, 모듈의 이름을 앞에 붙여주는 방식을 더 선호하는 편이다. 그러나, 그 만큼 키보드 입력이 늘어나는 것 또한 사실이므로, 모듈의 이름을 생략하는 방식을 원하는 사람들도 있을 것이다. 그럴때는 위 그림과 같이 from 키워드를 붙여줌으로써 원하는 펑션만 불러오는 것이 가능하다. 이렇게 호출된 펑션은 그림에서와 같이 모듈 이름 없이 직접 호출도 가능하다. 단, 차이가 있다면 import만 사용했을 때는 모듈의 전체 내용을 불러왔다면, from을 붙여줌으로써 원하는 변수나 펑션만 불러오므로, import되지 못한 모듈의 내부 변수를 사용할 경우 에러가 표시된다.

만약, 모듈 이름도 생략하면서 모듈의 모든 변수와 펑션 등을 불러와 사용할 때는 import 뒤에 Asterisk 마크를 붙여주면 된다.

모듈을 호출할 때, Alias를 사용하는 것도 좋은 방법이다. 위 그림과 같이 모듈을 불러오는 과정에서 as 키워드와 함께 앨리어스를 지정할 수 있는데, 이런 경우 변수나 펑션 앞에 앨리어스를 붙여주는 것만으로도 호출이 가능하므로, 모듈의 풀네임을 입력하는 것보다 타이핑 양을 줄여주면서, 외부에서 가져온 펑션임을 구분할 수 있다.

 

반응형

'Programming > Python' 카테고리의 다른 글

Python: 파일로부터 데이터 읽기  (0) 2021.02.05
Python: Class04  (0) 2021.01.27
Python: Class03  (0) 2021.01.26
Python: Class02  (0) 2021.01.25
Python: Class01  (0) 2021.01.24