모듈은 변수, 함수, 클래스 등을 모아놓은 파이썬(.py) 파일이다. 일반적인 프로그램에서는 하나의 파이썬 파일에 모든것을 정의하고 사용하지 않는다. 필요한 것들을 끼리끼리 묶어서 각각의 모듈을 만들어두고 불러와서 사용한다. 따라서 효율이 좋고 가독성이 높은 코드를 작성할 수 있다.

 

1. 모듈 생성 및 불러오기


먼저 mod.py 라는 파이썬 파일을 만들어보자.

#mod.py

def sum(a,b):
    return a+b

def mul(a,b):
    return a*b

위 mod.py 모듈은 두 가지의 함수를 가지고 있다. 이제 다른 파이썬 파일에서 mod.py의 함수를 불러와 사용해보자.

import mod

a = mod.sum(1,2)
b = mod.mul(2,3)

print(a,b)

가장 첫 줄에서 import mod 라는 선언을 했다. 이는 mod를 불러와 그 안에 있는 내용을 사용하겠다는 말이다. 주의해야 할 것은 모듈을 불러오기 위해서는 실행중인 파이썬 파일이 모듈과 같은 디렉토리에 있어야 한다.

한 번 다른 디렉토리에서 모듈을 불러와서 함수를 사용해보기 바란다. No module named Error가 날 것이다.

 

한 가지 불편한 것은 mod.py 모듈을 불러와도 모듈의 함수를 사용하려면 모듈명.함수명 처럼 함수앞에 모듈명을 붙여야 한다는 것이다. 이렇게 하지않고 함수 이름만 가지고 실행하는 방법이 있다.

from mod import sum

a = sum(1,2)
print(a)

'from 모듈명 import 함수명' 의 명령을 사용하면 함수 이름만으로도 모듈의 함수를 사용할 수 있어 편리하다.

from mod import sum

a = mul(1,2)
print(a)

위의 코드를 실행하면 오류가 난다. name mul is not defined 오류이다. 위에서 모듈을 불러온 코드를 보면 mod에서 sum 함수만 불러왔다. 따라서 mul 함수는 현재 파이썬 파일에서는 정의가 되지 않은 것이나 마찬가지다. 이 때에도 방법이 있다.

from mod import sum, mul

a = sum(1,2)
b = mul(2,3)
print(a,b)

위와 같이 함수 이름을 여러개 적어주어서 한번에 불러올 수 있다. 아니면 어떤 모듈의 모든 함수를 불러오는 방법이 있다.

from mod import *

a = sum(1,2)
b = mul(2,3)
print(a,b)
  • 기호는 '모든 것'을 뜻한다.

 

 

 

2. if __name__ == "__main__":


 

# mod.py

def sum(a,b):
    return a+b

def mul(a,b):
    return a*b

print(sum(1,2))
print(mul(2,3))

위와 같은 모듈을 만들었다. 이제 다른 파일에서 이를 불러온다.

#practice.py

import mod

mod.py를 불러오는 명령만 있는 파일을 실행하면 다음의 결과가 나온다.

3

6

불러오기만 하는데 출력을 해버린다. 불러오는 행위가 각각의 명령어들을 실행시켜 버리는 것이다. 이를 방지하기 위해 다음과 같이 코드를 작성하면 된다.

# mod.py

def sum(a,b):
    return a+b

def mul(a,b):
    return a*b

if __name__=="__main__":
    print(sum(1,2))
    print(mul(2,3))

if __name__=="__main__": 조건문은 모듈을 부르는 행위를 할 때에는 거짓이 되어 아래의 문장을 실행시키지 않고 직접 실행을 시킬 때에는 참이 되어 아래의 문장을 실행하게 해준다.

 

 

 

3. 클래스, 변수, 함수를 포함하는 모듈


 

# mod.py

num = 10

def sum(a,b):
    return a+b

class Person:
    def givename(self,name):
        self.name = name
        return self.name

위의 모듈은 변수, 함수, 클래스를 모두 가지고 있다. 다른 파이썬 파일에서 모듈의 변수, 함수, 클래스를 불러올 때에는 항상 모듈명.변수명, 모듈명.함수명, 모듈명.클래스명 형태로 하면 된다. 아주 단순하다.

#practice.py

import mod

print(mod.num)
print(mod.sum(1,2))
a = mod.Person()
print(a.givename("John"))

 

 

 

4. 다른 디렉토리의 모듈 import 하기


파이썬에서 기본적으로 제공하는 라이브러리들은 같은 디렉토리에 있지 않은데도 지금까지 불러와서 사용했다. 기본적으로 파이썬 라이브러리들이 저장되어 있는 디렉토리들을 훑어서 불러와주기 때문이다. 자동으로 훑는 이 path에 모듈이 있는 디렉토리를 추가한다면 자동으로 훑어서 모듈을 불러와 줄 것이다.

#practice.py
import sys
sys.path.append("C:/Users/jchg1/PycharmProjects/MyProject/MyDirectory")
import mod

print(mod.num)
print(mod.sum(1,2))
a = mod.Person()
print(a.givename("John"))

sys 모듈은 파이썬 라이브러리 모듈이다. sys.path 명령어를 사용하면 파이썬 라이브러리가 설치된 디렉토리들을 요소로 가지는 리스트를 반환해준다. 여기에 sys.path.append 함수를 사용해서 모듈이 있는 디렉토리를 추가하면 다른 디렉토리의 파이썬 파일에서 모듈을 불러와 사용할 수 있다.

'프로그래밍 언어 > Python' 카테고리의 다른 글

(Python) 19 - 예외처리  (0) 2020.05.16
(Python) 18 - 패키지  (0) 2020.05.16
(Python) 16 - 클래스 상속과 메소드 오버라이딩  (0) 2020.05.16
(Python) 15 - 클래스  (0) 2020.05.16
(Python) 14 - 파일 입출력  (0) 2020.05.16

+ Recent posts