웹사이트 검색

Python 3에서 모듈을 작성하는 방법


소개

Python 모듈은 Python 코드로 구성된 .py 파일입니다. 모든 Python 파일을 모듈로 참조할 수 있습니다.

일부 모듈은 Python의 패키지 관리자 pip와 함께 설치된 것을 통해 사용할 수 있습니다. 또한 모듈은 Python .py 파일로 구성되어 있으므로 자체 Python 모듈을 만들 수 있습니다.

이 튜토리얼은 다른 프로그래밍 파일 내에서 사용할 Python 모듈을 작성하는 과정을 안내합니다.

전제 조건

컴퓨터나 서버에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

모듈 작성 및 가져오기

모듈을 작성하는 것은 다른 파이썬 파일을 작성하는 것과 같습니다. 모듈은 다른 파이썬 프로그램에서 활용할 수 있는 함수, 클래스 및 변수의 정의를 포함할 수 있습니다.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

Python 3 로컬 프로그래밍 환경 또는 서버 기반 프로그래밍 환경에서 나중에 다른 파일로 가져올 hello.py 파일을 만들어 보겠습니다.

시작하려면 Hello, World!를 인쇄하는 함수를 만듭니다.

# Define a function
def world():
    print("Hello, World!")

python hello.py를 사용하여 명령줄에서 프로그램을 실행하면 프로그램에 아무 작업도 지시하지 않았기 때문에 아무 일도 일어나지 않습니다.

방금 만든 모듈을 가져온 다음 함수를 호출할 수 있도록 main_program.py라는 동일한 디렉터리에 두 번째 파일을 만듭니다. 이 파일은 내장 모듈이 아니기 때문에 Python이 모듈을 찾을 위치를 알 수 있도록 동일한 디렉토리에 있어야 합니다.

# Import hello module
import hello


# Call function
hello.world()

모듈을 가져오기 때문에 모듈 이름을 점 표기법으로 참조하여 함수를 호출해야 합니다.

대신 모듈을 from hello import world로 가져오고 함수를 world()로 직접 호출할 수 있습니다. 모듈을 가져올 때 fromimport를 사용하는 방법을 읽어 보면 이 방법에 대해 자세히 알아볼 수 있습니다.

이제 명령줄에서 프로그램을 실행할 수 있습니다.

  1. python main_program.py

그렇게 하면 다음과 같은 결과가 표시됩니다.

Output
Hello, World!

모듈에서 변수를 사용하는 방법을 알아보기 위해 hello.py 파일에 변수 정의를 추가해 보겠습니다.

# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"

다음으로 main_program.py 파일 내의 print() 함수에서 변수를 호출합니다.

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

프로그램을 다시 실행하면 다음과 같은 결과가 표시됩니다.

Output
Hello, World! Sammy

마지막으로 hello.py 파일에 클래스도 정의해 보겠습니다. namecolor 속성과 호출 시 속성을 출력하는 함수를 사용하여 Octopus 클래스를 생성합니다.

# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"


# Define a class
class Octopus:
    def __init__(self, name, color):
        self.color = color
        self.name = name

    def tell_me_about_the_octopus(self):
        print("This octopus is " + self.color + ".")
        print(self.name + " is the octopus's name.")

이제 main_program.py 파일 끝에 클래스를 추가합니다.

# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

# Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()

hello.Octopus()로 Octopus 클래스를 호출하면 main_program.py 파일의 네임스페이스 내에서 클래스의 기능과 속성에 액세스할 수 있습니다. 이렇게 하면 hello를 호출하지 않고 마지막 줄에 jesse.tell_me_about_the_octopus()를 작성할 수 있습니다. 예를 들어 hello 모듈의 이름을 참조하지 않고 jesse.color와 같은 클래스 속성 중 하나를 호출할 수도 있습니다.

프로그램을 실행하면 다음과 같은 결과가 나타납니다.

Output
Hello, World! Sammy This octopus is orange. Jesse is the octopus's name.

모듈은 종종 정의이지만 코드를 구현할 수도 있다는 점을 명심하는 것이 중요합니다. 이것이 어떻게 작동하는지 보기 위해 world() 함수를 구현하도록 hello.py 파일을 다시 작성해 보겠습니다.

# Define a function
def world():
    print("Hello, World!")

# Call function within module
world()

파일의 다른 정의도 삭제했습니다.

이제 main_program.py 파일에서 import 문을 제외한 모든 줄을 삭제합니다.

# Import hello module
import hello

main_program.py를 실행하면 다음과 같은 결과를 받게 됩니다.

Output
Hello, World!

이는 hello 모듈이 main_program.py로 전달되고 main_program.py가 실행될 때 실행되는 world() 함수를 구현했기 때문입니다. 가 실행됩니다.

모듈은 다른 Python 프로그램 파일에서 활용할 수 있는 정의 또는 코드로 구성된 Python 프로그램 파일입니다.

다른 디렉터리에서 모듈에 액세스

모듈은 둘 이상의 프로그래밍 프로젝트에 유용할 수 있으며, 이 경우 특정 프로젝트에 연결된 특정 디렉터리에 모듈을 보관하는 것이 적합하지 않습니다.

주 프로그램이 있는 동일한 디렉터리가 아닌 다른 위치에서 Python 모듈을 사용하려는 경우 몇 가지 옵션이 있습니다.

경로 추가

한 가지 옵션은 해당 모듈을 사용하는 프로그래밍 파일을 통해 모듈의 경로를 호출하는 것입니다. 이는 모듈을 시스템 전체에서 사용할 수 없게 하므로 개발 프로세스 중에 수행할 수 있는 임시 솔루션으로 간주해야 합니다.

모듈의 경로를 다른 프로그래밍 파일에 추가하려면 기본 프로그램 파일에서 사용하려는 다른 모듈과 함께 sys 모듈을 가져오는 것으로 시작합니다.

sys 모듈은 Python 표준 라이브러리의 일부이며 구현하려는 모듈의 경로를 설정하기 위해 프로그램에서 사용할 수 있는 시스템별 매개변수 및 함수를 제공합니다.

예를 들어, 우리가 hello.py 파일을 옮겼고 이제 파일이 /usr/sammy/ 경로에 있고 main_program.py 파일이 다른 디렉토리에 있습니다.

main_program.py 파일에서 sys 모듈을 가져온 다음 /usr/<를 추가하여 hello 모듈을 가져올 수 있습니다. mark>sammy/를 Python이 파일을 확인하는 경로로 바꿉니다.

import sys
sys.path.append('/usr/sammy/')

import hello
...

hello.py 파일의 경로를 올바르게 설정하면 오류 없이 main_program.py 파일을 실행할 수 있으며 다음과 같은 출력을 받을 수 있습니다. 위의 hello.py가 같은 디렉토리에 있을 때.

Python 경로에 모듈 추가

두 번째 옵션은 Python이 모듈과 패키지를 확인하는 경로에 모듈을 추가하는 것입니다. 이것은 모듈을 환경 전체 또는 시스템 전체에서 사용할 수 있도록 하는 보다 영구적인 솔루션으로, 이 방법을 더 쉽게 만들 수 있습니다.

Python이 확인하는 경로를 찾으려면 프로그래밍 환경에서 Python 인터프리터를 실행하십시오.

  1. python3

다음으로 sys 모듈을 가져옵니다.

  1. import sys

그런 다음 Python에서 시스템 경로를 출력하도록 합니다.

  1. print(sys.path)

여기에서 최소한 하나의 시스템 경로가 포함된 일부 출력을 받게 됩니다. 프로그래밍 환경에 있는 경우 여러 가지를 받을 수 있습니다. 현재 사용 중인 환경에 있는 모듈을 찾고 싶을 수도 있지만 기본 시스템 Python 경로에 모듈을 추가할 수도 있습니다. 찾고 있는 내용은 다음과 유사합니다.

Output
'/usr/sammy/my_env/lib/python3.5/site-packages'

이제 hello.py 파일을 해당 디렉터리로 이동할 수 있습니다. 완료되면 평소와 같이 hello 모듈을 가져올 수 있습니다.

import hello
...

프로그램을 실행할 때 오류 없이 완료되어야 합니다.

모듈의 경로를 수정하면 현재 있는 디렉터리에 관계없이 모듈에 액세스할 수 있습니다. 이는 특히 특정 모듈을 참조하는 프로젝트가 둘 이상인 경우에 유용합니다.

결론

Python 모듈을 작성하는 것은 다른 Python .py 파일을 작성하는 것과 동일합니다. 이 튜토리얼에서는 모듈 내에서 정의를 작성하는 방법, 다른 Python 프로그래밍 파일 내에서 해당 정의를 사용하는 방법, 액세스하기 위해 모듈을 보관할 위치에 대한 옵션을 살펴보았습니다.

Python 3에서 모듈을 가져오는 방법을 읽어 모듈 설치 및 가져오기에 대해 자세히 알아볼 수 있습니다.