TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 기초>

[파이썬] 파이썬 기초: 모듈

by 기록자_Recordian 2024. 10. 15.
728x90
반응형
모듈

 

- 모듈: 함수나 변수 또는 클래스를 모아 놓은 파일을 말하며, 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.

모듈은 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어서 사용할 수도 있다.

(파이썬 확장자 .py 로 만든 파이썬 파일은 모두 모듈이다)


모듈 만들기

 

아래와 같이 add 와 sub 함수만 있는 파일 mod1.py 를 만들고 디렉터리에 저장하면 이 mod1.py 파일이 바로 모듈이다.

# mod1.py
def add(a, b):
    return a + b
    
def sub(a, b):
    return a - b

 

위에서 만든 파일, 즉 모듈을 파이썬에서 불러와 사용하려면

먼저 명령 프롬프트(cmd) 창을 열고 mod1.py를 저장한 디렉터리로 이동한 다음 대화형 인터프리터를 실행한다.

해당 디렉터리에 'mod1.py' 파일이 있는 것이 확인된다.

 

앞서 만든 mod1 모듈을 불러와 제대로 작동하는지 확인해 볼 수 있다

import mod1 # mod1 모듈 불러오기
print(mod1.add(3,4)) # 더하기 함수
print(mod1.sub(10,4)) # 빼기 함수


모듈 불러오기 (import 사용 방법)

 

1) 모듈 불러오기

import 모듈 이름
# 모듈 이름은 mod1.py에서 확장자(.py)를 제거한 mod1 만을 가리킨다

 

2) 함수 이름으로 불러오기

# 모듈 이름 없이 함수 이름만 쓸 경우
# from 모듈 이름 import 모듈 함수
from mod1 import add
add(3, 4)

 

3) 둘 이상의 함수를 사용하고 싶을때

# from 모듈 이름 import 모듈 함수1, 모듈 함수2
from mod1 import add, sub

 

4) 모든 함수 불러오기

from 모듈 이름 import *

 


if __name__ == "__main__" 의미

 

앞서 만든 모듈 mod1.py을 아래와 같이 변경한다.

# mod1.py
def add(a, b):
    return a + b
    
def sub(a, b):
    return a - b

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

 

그리고 명령프롬프트 창에서 해당 모듈을 불러오면

 

mod1.py가 실행되어 결괏값을 출력한다. 이러한 문제를 방지하려면 mod1.py 파일을 아래와 같이 수정한다.

# mod1.py
def add(a, b):
    return a + b
    
def sub(a, b):
    return a - b

if __name__ == "__main__":

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

 

▶ if __name__ == "__main__" 을 사용하면 직접 이 파일을 실행했을 때는 __name__=="__main__" 이 참이 되어 if문 다음 문장이 수행된다. 반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 빌러서 사용할 때는 __name__=="__main__" 이 거짓이 되어 if문 다음 문장이 수행되지 않는다.

 

즉, 해당 프로그램을 직접 실행하는 경우(name == main 인 경우) 에는 결괏값이 출력되지만, 해당 프로그램을 직접 실행하지 않고, 이 모듈을 다른 파일에서 빌려서 사용할 때는 결괏값이 출력되지 않는다.


클래스나 변수 등을 포함한 모듈

 

모듈은 함수 외에도 클래스나 변수 등을 포함할 수도 있다.

아래는 원의 넓이를 계산하는 Math 클래스와 두 값을 더하는 add 함수 그리고 원주율 값에 해당되는 PI 변수처럼 클래스, 함수, 변수 등을 모두 포함하고 있다.

# mod2.py
PI = 3.141592

class Math:
    def solv(self, r):
        return PI * (r ** 2)
    
def add(a, b):
    return a + b

 

이를 mod2.py 로 하고 저장한 뒤 대화형 인터프리터를 열고 다음과 같이 따라해 본다.

 

위의 예시처럼 mod2.PI를 입력하여 mod2.py 파일에 있는 PI 변수 값을 사용할 수 있다.

또한 모듈 안에 있는 클래스를 사용하려면 mod2. 과 같이 '.' (도트 연산자)로 클래스 이름 앞에 모듈 이름을 먼저 입력해야 한다.

 

mod2.py에 있는 add 함수 역시 사용할 수 있다.

import mod2
print(mod2.add(mod2.PI, 4.4))


다른 파일에서 모듈 불러오기

 

이번에는 다른 파이썬 파일에서 이전에 만들어 놓은 모듈을 불러와서 사용하는 방법에 대해 알아본다.

먼저 mod2.py 파일과 동일한 디렉터리에 modtest.py 파일을 만든다.

# modtest.py
import mod2
result = mod2.add(3, 4)
print(result)

 

위에서 처럼 다른 파이썬 파일에서도 import mod2로 mod2 모듈을 불러와서 사용할 수 있다.

이를 위해서는 modtest.py과 mod2.py 파일이 동일한 디렉터리에 있어야 한다.


그 외에 모듈을 불러오는 방법들

 

먼저, 이전에 만든 mod2.py 파일을 새 디렉터리로 이동시킨다.

C:\Users\기본 경로>cd C:\doit #이동할 경로
C:\doit>mkdir mymod # 새 디렉터리 생성
C:\doit)>move mod2.py mymod #지정한 디렉터리로 파일 이동

 

1) sys.path.append(모듈을 저장한 디렉터리) 사용하기

C:\doit>python
>>> import sys

 

sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다. 이 sys 모듈을 사용하면 파이썬 라이브러리가 설치되어 있는 디렉터리를 확인할 수 있다.

sys.path 는 파이썬 라이브러리가 설치되어 있는 디렉터리를 보여 준다. 만약 파이썬 모듈이 위 디렉터리에 들어 있다면 모듈이 저장된 디렉터리로 이동할 필요 없이 바로 불러서 사용할 수 있다.따라서 sys.path에 C:\doit\mymod 디렉터리를 추가하면 아무 곳에서나 불러 사용할 수 있다.

# 명령프롬프트 창에서
sys.path.append("C:/doit/mymod")

 

2) PYTHONPATH 환경 변수 추가하기

# 명령프롬프트 창에서
C:\doit>setPYTHONPATH=C:\doit\mymod
C:\doit>python
>>> import mod2
>>> print(mod2.add(3, 4))

 

set 명령어를 사용해 PYTHONPATH 환경 변수에 mod2.py 파일이 있는 디렉터리를 설정한다. 그러면 디렉터리 이동이나 별도의 모듈 추가 작업 없이 mod2 모듈을 불러와서 사용할 수 있다.


[출처]

점프 투 파이썬, 이지스 퍼블리싱, 박응용

728x90
반응형