상세 컨텐츠

본문 제목

[ Python 기초 문법 ] - 모듈

Language/Python

by bing_su 2023. 9. 19. 14:51

본문

반응형
SMALL

모듈(Module)함수나 변수 또는 클래스를 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 '파이썬 파일'이라고도 할 수 있다. 앞서 배운 클래스는 상속을 통해 다양한 속성과 메서드를 사용할 수 있었다. 그러나 클래스의 상속은 유사한 성격을 가진 클래스에서만 유용하며, 여러 가지 상황에 사용할 수 있는 범용성은 떨어지는 편이다. 그래서 자주 사용하는 함수들을 따로 관리하다가 필요한 곳에 재사용할 수 있는 방법에 모듈을 사용하면 편리해진다. 

 

앞으로 파이썬 프로그래밍에서 우리는 굉장히 많은 모듈을 사용하게 될 것이다. 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고, 우리가 직접 만들어서 사용할 수도 있다. 이제부터 모듈을 어떻게 만들고 사용할 수 있는지에 대해 알아보자.

[ 모듈 생성 ]

모듈의 생성은 의외로 간단하다. 원하는 코드를 작성한 후 파일을 .py 확장자로 저장하면 된다. 아래와 같이 간단한 모듈을 만들고 mod1.py라는 이름의 파일을 저장하자. 지금까지 에디터로 만들어 온 파이썬 파일과 저장 방식이 다르지 않다.

C:\Python 디렉터리에 mod1.py 파일 생성

[ 모듈 불러오기 ]

Anaconda Prompt를 열고, 모듈이 저장된 디렉터리(해당 예시에서는 C:\Python)로 이동한 다음 대화형 인터프리터를 실행하면 모듈을 불러올 수 있다.

anaconda에서 대화형 인터프리터 실행

아래와 같이 명령어를 작성하며 모듈을 불러와서 사용해 보는 실습을 진행하자.

>>> import mod1  # 만들어 놓은 mod1 모듈을 사용할 수 있도록 import 명령어 사용 
>>> print(mod1.add(3, 4))  # 도트 연산자(.)를 사용하여 mod1 모듈 내부의 add 함수 사용
7
>>> print(mod1.sub(4, 2))  # 도트 연산자(.)를 사용하여 mod1 모듈 내부의 sub 함수 사용
2

mod1.py 파일을 불러오기 위해 import 명령어를 사용했다. import는 만들어진 파이썬 모듈을 사용할 수 있게 해 주는 명령어로, 아래와 같이 사용하면 된다.

import module_name

이때, 모듈 이름은 mod1.py에서 확장자 .py를 제거한 mod1만 쓰면 된다.

※ 모듈 함수를 사용하는 또 다른 방법

모듈 함수를 도트 연산자(.)를 사용하여 mod1.sum(a, b)처럼 쓰지 않고 함수 이름만 사용하여 add(a, b)와 같이 사용할 수 있는 방법이 존재한다. 아래와 같은 방법을 사용하면 된다.

from module_name import module_function

아래의 예시 코드를 사용하여 더 자세히 살펴보자.

# 하나의 함수만 사용하는 경우
>>> from mod1 import add  # mod1 모듈의 add 함수 사용
>>> add(3, 4)
7

# 함수를 여러 개 사용하고 싶은 경우: 사용할 함수 이름 전부를 쓰면 됨
>>> from mod1 import add, sub  # mod1 모듈의 add, sub 함수 사용
>>> sub(4, 2)
2
>>> add(2, 6)
8

# 모듈에 있는 함수 전부를 사용하고 싶을 때
>>> from mod1 import *  # mod1 모듈의 모든 함수 사용
>>> add(5, 4)
9
>>> sub(9, 2)
7

사용한 예시 모듈에서는 함수가 2개밖에 없었기 때문에 두 번째와 세 번째 방법은 동일하게 적용된다. 세 번째 방법의 경우 모듈에 포함된 모든 함수를 가지고 오는데, 이는 사용하고자 하는 모듈이 엄청 클 때 메모리나 시간적으로 부담이 될 수 있다. 따라서 이런 경우는 모듈에서 사용할 특정 함수만 가져옴으로써 해결할 수 있다.

[ 모듈 이름 재명명(Re-naming) 하기 ]

만약 사용하고자 하는 모듈의 이름이 길거나 다르게 부르고 싶을 때는 아래의 방법을 사용하면 된다.

>>> import mod1 as md  # mod1 모듈을 불러오고, 해당 모듈의 이름을 당분간 md로 부르겠다는 뜻
>>> print(md.add(3, 4))
7

바로 위와 같이 as를 사용하면 된다. 쉽게 설명하자면 위의 코드에서는 mod1 모듈을 불러오고, 해당 모듈을 프로그램 내에서 md로 당분간 부르겠다는 의미다.

[ if __name__ == "__main__" ]

def add(a, b):
    return a + b
def sub(a, b):
    return a - b

print(add(3, 4))
print(sub(4, 2))

위와 같이 모듈의 끝에 print 문을 추가한 후, 해당 모듈을 import 하면 자동으로 결괏값이 출력된다.

>>> import mod1
7  # add(3, 4)의 결괏값 출력
2  # sub(4, 2)의 결괏값 출력

모듈을 불러왔을 때 결괏값이 출력되지 않게 하기 위한 방법으로 if __name__ == "__main__"을 사용할 수 있다.

def add(a, b):
    return a + b
def sub(a, b):
    return a - b
if __name__ == "__main__":
    print(add(3, 4))
    print(sub(4, 2))
    
# 일반 에디터 실행 시 출력 화면
7
2

해당 프로그램을 일반 에디터로 실행하면 __name__ == "__main__" 조건문이 참이 되어 if문 내부의 문장이 실행된다. 그러나 대화형 인터프리터에서나 다른 파일에서 해당 모듈을 불러서 사용할 때는 __name__ == "__main__" 조건문이 거짓이 되어 if문 내부의 문장이 실행되지 않는다. 따라서 아래와 같이 대화형 인터프리터에서 모듈을 불러 오면 아무런 결괏값이 출력되지 않음을 확인할 수 있다.

>>> import mod1
>>>

※ __name__ 변수

__name__ 변수는 파이썬이 내부적으로 사용하는 특별한 변수명이다. 만약 mod1.py 파일을 직접 실행할 경우에는 mod1.py의 __name__ 변수에는 __main__의 값이 저장된다. 그러나 파이썬 셸이나 다른 파이썬 모듈에서 mod1을 import 할 경우에는 mod1.py의 __name__ 변수에는 mod1.py의 모듈 값인 mod1이 저장된다.

[ 클래스나 변수를 포함한 모듈 ]

지금까지 설명에서는 모듈에 함수만 포함했지만 아래와 같이 클래스나 변수 역시 포함할 수 있다.

C:\Python 디렉터리에 mod2.py 파일 생성

위와 같이 mod2.py 파일을 생성하고 대화형 인터프리터를 열어 기존의 방식과 같이 모듈을 실행하면 아무런 결괏값이 출력되지 않는다. 이렇게 import된 모듈에 포함된 변수, 클래스, 함수는 아래와 같이 사용할 수 있다.

>>> import mod2  # mod2 모듈 불러옴.
>>> print(mod2.PI)  # mod2 모듈에 있는 변수 값 PI 출력
3.141592
>>> a=mod2.Math()  # mod2 모듈에 있는 Math 클래스 사용
>>> print(a.sol(2))
12.566368
>>> print(mod2.add(mod2.PI, 4.4))
7.5415920000000005

[ 새 파일에 만들어둔 모듈 불러오기 ]

새로 만들 파이썬 파일에 이전에 이미 만들어 놨던 모듈을 불러와서 사용할 수 있다. 단, 실행 파일과 모듈 파일은 같은 디렉터리(경로)에 있어야 한다.

# C:\Python\modtest.py
import mod2
result = mod2.add(3, 4)
print(result)

# 출력 화면
7

[ 내장된 모듈 ]

파이썬에 내장된 모듈을 import 해서 사용할 수도 있다.

import platform
print(platform.system())

platform.system()을 사용하면 사용자의 컴퓨터 플랫폼을 알려준다. 해당 사이트에는 파이썬 라이브러리에 내장된 모듈에 대해 나온다. (사이트: https://docs.python.org/3.4/library/index.html)

 

The Python Standard Library — Python 3.4.10 documentation

The Python Standard Library While The Python Language Reference describes the exact syntax and semantics of the Python language, this library reference manual describes the standard library that is distributed with Python. It also describes some of the opt

docs.python.org

[ dir() 함수 ]

dir 함수를 사용하면 선택한 모듈 안에 있는 함수들과 변수들을 리스트 형태로 출력해준다.

platform 모듈에서 사용 가능한 함수 리스트다.

반응형
LIST

관련글 더보기

댓글 영역