소개
Python은 세계에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 모듈은 Python 코드의 중요한 부분입니다. 모듈은 단순히 .py 파일이며, Python 3 환경에서의 파일입니다. 이는 모든 Python 파일을 모듈로 지칭할 수 있음을 의미합니다.
기존에 구성된 라이브러리를 통해 이러한 모듈을 얻을 수 있습니다. 다음을 살펴보실 수 있습니다: Python 표준 라이브러리에서 자세한 내용을 확인할 수 있습니다. 이들은 Python을 설치할 때 시스템에 함께 설치됩니다. 다른 경우에는 Python 패키지 관리자인 pip를 사용하여 이러한 모듈을 설치할 수 있습니다. 하지만 사용자 정의 모듈을 만들고 싶다면 어떻게 해야 할까요? 그런 경우라면 Python에서 자신만의 모듈을 만들 수 있다는 사실이 반가울 것입니다.
이 상세 가이드에서는 Python 3에서 모듈을 작성하고 가져오기 위해 따라야 할 단계를 개략적으로 설명합니다.
전제 조건
시작하기 전에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있는지 확인해야 합니다. 아직 준비되지 않은 경우, 저희의 Ubuntu 16.04에서 Python 3 설치 및 로컬 프로그래밍 환경 구축에 관한 튜토리얼을 따라 설치를 완료할 수 있습니다.
모듈을 작성하는 방법
모듈 작성부터 시작해 보겠습니다. 다른 Python 파일을 작성하는 것과 마찬가지로 모듈을 작성하면 됩니다. 일반적인 모듈은 함수, 클래스 및 변수의 정의로 구성됩니다. 그 후, 이 모듈을 다른 Python 프로그램에 적용하여 사용할 수 있습니다.
이해를 돕기 위해 예를 들어 보겠습니다. 이름이 다음과 같은 파일을 만들고 싶다고 가정해 봅시다: hello.py. 나중에 이 파일을 다른 파일로도 가져올 것입니다. 이 과정의 첫 번째 단계는 함수를 만드는 것입니다. 이 함수는 다음과 같이 Hello, World!를 출력하는 역할을 합니다:
|
1 2 3 |
# 함수 정의 def world(): print("Hello, World!") |
이 시점에서, 다음 명령을 실행하면 python hello.py 명령을 실행해도 아무런 결과도 얻지 못할 것입니다. 이는 프로그램에 아직 아무런 지시도 내리지 않았기 때문입니다. 작동하게 하려면 모듈을 가져와야 합니다.
모듈을 가져오는 방법
모듈을 함수로 사용하기 위해 모듈을 가져오려면, 동일한 디렉터리에 두 번째 파일을 만들어야 합니다. 이 새 파일의 이름을 다음과 같이 지정하겠습니다: main_program.py. 두 파일이 모두 동일한 디렉터리에 있어야 하는 이유는 프로그램에 모듈을 찾을 위치를 안내해야 하기 때문입니다. 이는 내장되지 않은 모든 새로운 사용자 정의 모듈에 적용됩니다:
|
1 2 3 4 5 |
# hello 모듈 가져오기 import hello # 함수 호출 hello.world() |
함수를 호출하기 위해 모듈 이름에 점 표기법(dot notation)을 사용했습니다. 이를 수행하는 또 다른 방법은 다음 메서드를 사용하는 것입니다: from...import 메서드입니다. 여기서는 함수를 world()로 호출하기 위해, 모듈을 from hello import world로 가져올 것입니다. 마지막으로, 다음 명령을 실행할 수 있습니다:
|
1 |
python main_program.py |
이 명령은 다음과 같은 출력을 보여줍니다:
|
1 2 |
출력: Hello, World! |
모듈에 변수 추가하기
다음으로, 모듈에 정의를 추가하여 모듈에 변수를 추가하는 방법을 살펴보겠습니다:
|
1 2 3 4 5 6 |
# 함수 정의 def world(): print("Hello, World!") # 변수 정의 shark = "Sammy" |
그 후, 다음 함수에서 변수를 호출하게 됩니다: print(). 다음 파일 내에서 호출할 것입니다: main_program.py 파일:
|
1 2 3 4 5 6 7 |
# hello 모듈 가져오기 import hello # 함수 호출 hello.world() # 변수 출력 print(hello.shark) |
프로그램을 실행하면 다음과 같은 출력이 표시됩니다:
|
1 2 3 |
출력: Hello, World! Sammy |
모듈에 클래스 추가하기
마지막으로, 모듈을 위해 파일에 클래스를 정의하는 방법을 살펴보겠습니다. 예제를 계속 이어서, 다음 파일에 Octopus라는 새 클래스를 만들 것입니다: hello.py 파일. 또한 여기에 다음과 같은 속성을 할당할 것입니다: name 및 color. 그런 다음, 출력 가능하게 만드는 함수를 추가할 것입니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 함수 정의 def world(): print("Hello, World!") # 변수 정의 shark = "Sammy" # 클래스 정의 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 파일:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# hello 모듈 가져오기 import hello # 함수 호출 hello.world() # 변수 출력 print(hello.shark) # 클래스 호출 jesse = hello.Octopus("Jesse", "orange") jesse.tell_me_about_the_octopus() |
다음 명령어로 클래스를 호출할 수 있습니다: hello.Octopus() 명령어. 이 명령어는 파일의 네임스페이스에 있는 Octopus 클래스의 함수와 속성을 보여줍니다. 따라서 마지막 줄에 jesse.tell_me_about_the_octopus()를 작성할 때, 다음을 호출하지 않고도 작성할 수 있습니다: hello. 또한 다음을 사용하지 않고 클래스의 개별 속성을 호출하는 것도 가능합니다: hello. 예를 들어, 단순히 다음을 실행할 수 있습니다: jesse.color. 프로그램을 실행하면 다음과 같은 출력이 표시됩니다:
|
1 2 3 4 5 |
출력: Hello, World! Sammy This octopus is orange. Jesse is the octopus's name. |
모듈을 사용하여 코드 구현하기
모듈을 사용하여 정의를 지정할 수 있는 것처럼, 코드를 구현하는 데에도 모듈을 사용할 수 있습니다. 예를 들어, 다음 함수를 구현하고 싶다고 가정해 보겠습니다: world() 함수. 초기 hello.py 파일을 완전히 다시 작성할 것입니다:
|
1 2 3 4 5 6 |
# 함수 정의 def world(): print("Hello, World!") # 모듈 내에서 함수 호출 world() |
다음 파일에서 main_program.py 파일의 import 문을 제외한 모든 내용을 삭제하여 다음과 같이 남겨둡니다:
|
1 2 |
# hello 모듈 가져오기 import hello |
프로그램이 다음 함수를 구현하고 실행하므로, 메인 프로그램 파일을 실행하면 다음과 같은 출력이 표시됩니다: world() 함수:
|
1 2 |
출력: Hello, World! |
다른 디렉터리에서 모듈에 액세스하는 방법
이제 모듈을 생성하고 수정하는 방법을 알았으므로, 다른 디렉터리에서 모듈에 액세스하는 방법을 알아야 합니다. 이는 다른 프로젝트에서 특정 모듈을 사용해야 할 때 유용합니다. 아래에서 설명할 두 가지 방법이 있습니다.
-
경로 추가하기
첫 번째 방법은 이미 모듈을 사용하고 있는 프로그래밍 파일을 사용하여 모듈 경로를 활성화하는 것입니다. 아쉽게도 이 방법은 시스템 전체에서 모듈을 사용할 수 있게 된다는 의미는 아닙니다. 따라서 이는 임시 해결책으로만 간주됩니다. 주로 프로젝트의 개발 단계에서 사용됩니다.
다음을 가져옴으로써 경로 추가 프로세스를 시작할 수 있습니다: sys 모듈 및 사용해야 하는 다른 중요한 모듈. 이 모듈들을 메인 프로그램 파일로 가져올 것입니다. 다음 모듈은 sys 모듈로, Python 표준 라이브러리에서 찾을 수 있습니다. 이 모듈은 시스템에 특정한 기본 매개변수와 함수를 포함하고 있기 때문에 필요합니다.
이전 예시를 다시 한 번 살펴보겠습니다. 다음 파일이 hello.py 파일이 다음 경로에 있고, /usr/sammy/ 경로에 있으며, main_program.py 파일은 다른 디렉터리에 있다고 가정해 보겠습니다. 먼저 sys 모듈을 사용하여 hello 모듈을 main_program.py 파일로 먼저 가져올 것입니다. 다음으로, 경로에 다음을 추가할 것입니다: /usr/sammy/ 경로:
|
1 2 3 4 5 6 |
import sys sys.path.append('/usr/sammy/') import hello ... |
경로를 올바르게 설정했다면, 다음 파일이 main_program.py 파일이 오류 없이 쉽게 실행될 것입니다. 두 파일이 같은 디렉토리에 있었을 때와 동일한 출력을 받게 됩니다.
-
Python 경로
선택할 수 있는 다른 옵션은 Python 경로입니다. 여기서는 Python이 모듈과 패키지를 확인하는 경로에 모듈 자체를 추가합니다. 짐작하시겠지만, 이렇게 하면 모듈을 시스템 전체에서 사용할 수 있게 되므로 유용한 영구적인 해결책이 됩니다.
이를 위해 Python이 모듈을 어디에서 찾고 있는지 알아내야 합니다. 다음과 같은 프로그래밍 환경에서 Python 인터프리터를 실행해야 합니다:
|
1 |
python |
다음 단계는 sys 모듈을 임포트하는 것입니다:
|
1 |
>>> import sys |
다음으로, 시스템 경로를 출력합니다:
|
1 |
>>> print(sys.path) |
이제 출력으로 시스템 경로가 표시됩니다. 최소한 하나는 존재합니다. 하지만 프로그래밍 환경에 따라 여러 개가 있을 수도 있습니다. 목록에서 사용 중인 환경을 찾으십시오. 메인 시스템 Python 경로에도 모듈을 추가하고 싶을 수 있다는 점을 염두에 두십시오. 다음과 같이 표시됩니다:
|
1 2 |
Output: '/usr/sammy/my_env/lib/python3.5/site-packages' |
마지막으로, hello.py 파일을 이 디렉토리로 이동하고 다음과 같이 모듈을 임포트합니다:
|
1 2 |
import hello ... |
프로그램이 오류 없이 파일을 실행하면 성공한 것입니다. 이 과정의 결과로 시스템의 어느 디렉토리에서나 모듈에 액세스할 수 있게 됩니다.
결론
이 튜토리얼의 목적은 Python 모듈 작성에 익숙해지도록 돕는 것이었습니다. 이는 다른 Python .py 파일을 작성하는 방법과 매우 유사합니다. 먼저 Python 모듈과 관련 기능이 실제로 무엇인지에 대해 이야기했습니다. 그런 다음 Python의 다른 프로그래밍 파일에서 이러한 정의를 적용하는 방법을 알아보았습니다. 마지막으로 모듈 접근성에 대한 세부 정보를 파악했습니다. 이제 Python 3에서 모듈을 작성하는 방법과 모듈에 액세스하는 방법을 알게 되었습니다.
Python 프로그래밍 언어에 대한 지식을 더욱 쌓으려면 저희 블로그에서 더 많은 자료를 확인해 보세요:
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.