모듈이 필요한 이유
모듈이 필요한 이유는 재사용성 때문입니다.
모듈은 여러 애플리케이션에서 사용할 수 있는 기능을 구현하는 데 도움이 됩니다. 예를 들어, 데이터베이스와의 상호 작용을 위한 다양한 기능을 포함하는 모듈을 개발할 수 있습니다. 여러 응용 프로그램에서 이 모듈을 사용할 수 있습니다.
모듈 개발의 또 다른 이점은 유연한 코드 관리입니다. 모듈을 사용하면 응용 프로그램의 모든 기능을 포함하는 하나의 큰 파일에 비해 관리하기 쉬운 여러 파일로 응용 프로그램을 나눌 수 있습니다.
모듈의 생성과 임포팅
모듈은 파이썬 파일에 지나지 않습니다. 모듈을 만들려면 Python 파일을 만들고 해당 파일에 모듈 쓰기 기능을 추가하기만 하면 됩니다. 다른 Python 파일과 마찬가지로 모듈에는 함수, 속성, 클래스 등이 포함될 수 있습니다.
첫 번째 모듈을 만들어 보겠습니다. 이름을 mymodule로 지정하겠습니다. mymodule이라는 모듈을 생성하려면 mymodule.py라는 Python 파일을 생성해야 합니다.
모듈에 show_message()라는 간단한 함수를 추가해 보겠습니다. 이 함수는 콘솔에 문자열을 출력합니다.
def show_message():
print("Hello from your custom module")
Python 애플리케이션에서 이 모듈을 사용하려면 다른 Python을 생성하고 모듈 파일 mymodule.py를 저장한 동일한 디렉토리에 저장해야 합니다.
새 파일에 아무 이름이나 지정할 수 있습니다. 이름을 test.py로 지정하겠습니다. test.py 파일에서 mymodule 모듈을 사용하려면 먼저 mymodule을 가져와야 합니다. import 키워드를 사용하고 모듈 이름 mymodule을 사용해야 합니다.
모듈의 파일 이름은 mymodule입니다. 모듈을 가져오는 동안 .py 확장자를 지정하지 않습니다. 확장자 없이 모듈 이름만 쓰면 됩니다.
모듈에서 속성, 함수 또는 클래스에 액세스하려면 모듈 이름 뒤에 점 연산자와 호출해야 하는 속성 또는 함수를 사용할 수 있습니다.
다음 스크립트는 테스트에서 mymodule 모듈을 가져와서 show_message() 함수를 호출합니다.
import mymodule
mymodule.show_message()
Output:
Hello from your custom module
점 연산자를 사용하여 모듈 함수 또는 속성에 액세스하는 것 외에도 모듈 함수를 직접 가져올 수도 있습니다. 이렇게 하려면 import 키워드를 사용할 수 있습니다.
다음 스크립트는 mymodule 모듈에서 show_message() 함수를 가져옵니다.
from mymodule import show_message
show_message()
Output:
Hello from your custom module
이제 mymodule 모듈에 또 다른 함수 find_square()를 추가해 보겠습니다. find_Square() 함수는 숫자를 받아들이고 제곱을 반환합니다. 다음 스크립트를 사용하여 mymodule.py 파일을 업데이트합니다.
def show_message():
print("Hello from your custom module")
def find_square(num):
return num * num
이제 mymodule 모듈에 두 가지 기능이 있습니다. 다음 스크립트는 test.py 파일의 mymodule 모듈에서 show_message() 함수를 가져옵니다. 다음으로 find_square() 함수를 호출합니다.
from mymodule import show_message
find_square(5)
다음은 위 스크립트의 출력입니다. 출력은 find_square 함수가 정의되지 않았음을 보여줍니다.
Output:
NameError: name ‘find_square’ isnot defined
이 오류의 원인은 스크립트 5에서 가져오기 기능이 mymodule 모듈에서 모든 것을 가져오지 않기 때문입니다. show_message() 함수만 가져옵니다. 가져오지 않은 find_square() 함수를 호출하였기 때문에 오류가 발생한 것입니다.
모듈에서 모든 것을 가져오려면 import 키워드 뒤에 별표를 추가해야 합니다.
다음 스크립트는 test.py 파일의 mymodule 모듈에서 모든 것을 가져옵니다. test.py 파일에서 show_message() 및 find_square() 함수를 모두 호출할 수 있습니다.
from mymodule import *
show_message()
find_square(5)
여러 모듈 생성 및 임포팅
여러 사용자 지정 모듈을 만들고 응용 프로그램으로 가져올 수 있습니다.
mymodule2라는 모듈을 만들어 보겠습니다. 이렇게 하려면 mymodule과 동일한 디렉토리에 mymodule2.py라는 파일을 만듭니다. py 및 모듈을 가져오는 테스트 파일인 test. 이 경우 파이.
mymodule2라는 모듈을 만들어 보겠습니다. 그렇게 하려면 mymodule.py와 동일한 디렉토리에 mymodule2.py라는 파일을 만들고 모듈을 가져올 테스트 파일(이 경우 test.py)을 만듭니다.
mymodule2에는 전달된 숫자의 큐브를 반환하는 find_cube() 함수가 포함되어 있습니다. find_cube() 메서드 내에서 숫자는 mymodule 모듈의 find_square() 메서드에 전달됩니다.
그런 다음 find_square() 메서드에서 반환된 값에 입력 숫자를 곱합니다.
import mymodule
def find_cube(num):
return num * mymodule.find_square(num)
test.py 파일에서 다음 스크립트와 같이 mymodule2 모듈을 가져와서 모든 것을 가져올 수 있습니다. 그런 다음 find_ cube() 함수를 사용하여 임의의 수의 큐브를 계산할 수 있습니다.
from mymodule2 import *
result = find_cube(5)
print(result)
mymodule 및 mymodule2를 개별적으로 가져올 수도 있습니다. 다음 스크립트는 mymodule 모듈의 find_square() 메서드를 사용하여 숫자의 제곱을 계산하고 mymodule2 모듈의 find_cube() 메서드를 사용하여 숫자의 세제곱을 찾습니다.
import mymodule
import mymodule2
result = mymodule.find_square(5)
print(result)
result = mymodule2.find_cube(5)
print(result)
Output:
25
125
사용자 정의 모듈에 클래스 추가
함수와 마찬가지로 모듈에 클래스를 추가할 수도 있습니다. mymodule 내부에 간단한 클래스 CustomClass를 생성합니다.
CustomClass에는 show_message() 및 find_square()의 두 가지 메서드가 있습니다.
class CustomClass:
def show_message(self):
print("Hello from your custom module")
def find_square(num):
return num * num
이제 CustomClass의 find_square() 메서드를 호출하는 다음 스크립트와 같이 애플리케이션의 mymodule에서 CustomClass를 가져올 수 있습니다.
import mymodule
my_class = mymodule.CustomClass()
result = my_class.find_square(5)
print(result)
Output:
25
다른 경로에서 모듈 가져오기
이전 스크립트에서 모듈 파일과 테스트 파일을 동일한 디렉토리에 배치했습니다. 그러나 모듈 파일을 다른 디렉토리에 저장하고 모듈을 애플리케이션으로 가져올 수도 있습니다.
mymodule3.py라는 파일을 만듭니다. 파일에 다음 스크립트를 추가하고 텍스트 파일의 디렉터리와 다른 디렉터리에 저장합니다.
class CustomClass3:
def show_message(self):
print("Hello from your custom module")
def find_square(num):
return num * num
mymodule3.py 파일을 D:/python 디렉토리에 저장했다고 가정합니다. mymodule3을 애플리케이션으로 가져오기 전에 Python 인터프리터가 모듈을 검색할 경로 목록에 D:/python 디렉토리를 포함해야 합니다. 이렇게 하려면 아래와 같이 sys 모듈의 경로 개체에서 append() 메서드를 사용할 수 있습니다.
import sys
sys.path.append("D:/python")
이제 애플리케이션의 D:/python 디렉토리에 있는 모든 모듈을 가져올 수 있습니다.
다음 스크립트는 mymodule3 모듈을 가져온 다음 mymodule3 모듈에서 CustomClass3의 find_square() 메서드를 호출합니다.
import mymodule3
my_class = mymodule3.CustomClass3()
result = my_class.find_square(5)
print(result)
Output:
25
Python 경로에 모듈 추가
모듈을 가져올 때 Python 인터프리터는 다양한 경로에서 모듈을 검색합니다. Python 인터프리터에 액세스할 수 있는 모든 경로를 보려면 다음 스크립트를 사용할 수 있습니다.
import sys
print(sys.path)
출력은 다음과 같을 것입니다. Python 설치 디렉토리와 설치한 패키지에 따라 출력이 다르게 보일 수 있습니다.
Python 패키지의 기본 경로에 사용자 정의 모듈을 추가하려면 사이트 패키지가 포함된 경로를 찾으십시오. 그리고 이 경로에 mymodule3.py 파일을 저장합니다. 이제 mymodule3.py 파일의 경로를 애플리케이션에 명시적으로 추가하지 않고도 mymodule3 모듈에서 기능을 호출할 수 있습니다.
'프로그래밍 언어 > 파이썬 (Python)' 카테고리의 다른 글
[파이썬 학습] 스레드 동기화 (0) | 2022.02.26 |
---|---|
[파이썬 학습] 멀티 스레딩 (0) | 2022.02.25 |
[파이썬 학습] Datetime, Math, Random 모듈 (0) | 2022.02.22 |
[파이썬 학습] 디버거 모듈과 컬렉션 모듈 (0) | 2022.02.20 |
[파이썬 학습] 정규 표현식 (0) | 2022.02.19 |