모듈 (Module)
이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 모듈 (Module)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
모듈(Module)은 관련된 코드와 이름을 묶어 다른 부분에서 가져다 쓸 수 있게 한 프로그램 구성 단위입니다. 함수나 값의 정의를 한곳에 두고 필요한 곳에서 참조하므로, 같은 코드를 여러 파일에 복사하는 일을 줄입니다. 모듈을 나누고 가져오는 문법, 이름이 보이는 범위, 초기화 코드의 실행 방식은 언어와 실행 환경에 따라 달라집니다.
기능을 묶고 가져오는 단위
Python의 모듈 안내는 정의와 실행문을 담은 파일을 모듈로 설명합니다. Python 코드 파일의 정의를 다른 모듈이나 주 프로그램에서 가져와 사용할 수 있습니다. 날짜를 표시하는 함수를 여러 화면에서 쓴다면 각 화면에 함수를 복사하는 대신, 한 모듈에 정의하고 필요한 곳에서 참조하는 식입니다. 표시 규칙을 수정할 위치와 그 함수를 쓰는 위치가 구분됩니다.
모듈을 가져오는 일과 그 안의 함수를 호출하는 일은 별도입니다. Python에서 모듈을 가져온 뒤에는 모듈 이름을 통해 내부 함수에 접근할 수 있으며, 특정 이름을 직접 가져오는 방식도 있습니다. 어느 방식을 썼는지에 따라 호출하는 코드에 적을 이름이 달라집니다. 함수를 찾을 수 없다는 오류가 나면 함수 정의의 존재뿐 아니라, 그 이름을 어느 범위로 가져왔는지도 살펴봅니다.
같은 Python 안내는 각 모듈이 자체 이름 공간을 가진다고 설명합니다. 이름 공간은 함수나 변수 이름이 어떤 대상을 가리키는지 관리하는 범위입니다. 서로 다른 모듈에서 같은 이름을 사용해도 모듈 이름을 통해 구분할 수 있습니다. 다만 필요한 이름을 한 공간으로 직접 가져올 때는 기존 이름과 겹칠 수 있으므로, 파일을 나눴다는 사실과 사용하는 이름이 충돌하지 않는다는 사실은 구분됩니다.
공개할 기능과 패키지의 구분
MDN의 JavaScript 모듈 안내는 다른 모듈에서 쓸 기능을 export로 내보내고 import로 가져오는 방식을 설명합니다. 함수뿐 아니라 변수나 클래스도 내보낼 수 있습니다. 가져온 이름은 해당 모듈의 범위에서 쓰며 자동으로 모든 스크립트의 전역 이름이 되지는 않습니다. 어떤 기능을 외부에 제공하고 어떤 이름을 내부에서만 쓸지 구분하며 코드를 읽게 됩니다.
내부 계산을 여러 단계로 나누더라도 사용하는 쪽에는 필요한 함수만 제공할 수 있습니다. 날짜 문구를 만드는 모듈이라면 외부에는 날짜를 받아 문구를 돌려주는 기능을 제공하고, 그 안에서 쓰는 세부 변환은 모듈 안에 둘 수 있습니다. 이 구분은 호출자가 알아야 할 정보를 줄이는 데 도움이 됩니다. 이름의 범위를 나눴다고 별도의 운영체제 권한이나 보안 격리가 생기는 것은 아닙니다.
Python의 패키지 설명은 점으로 연결한 모듈 이름으로 이름 공간을 구성하는 방식을 제시합니다. 패키지는 관련 모듈을 묶고 계층적으로 찾는 데 쓰입니다. 라이브러리는 재사용할 기능의 모음을 가리키는 더 넓은 표현으로, 여러 모듈과 패키지를 포함할 수 있습니다. 모듈을 가져오는 문장과 외부 라이브러리를 설치하는 작업도 구분되며, 설치된 구성요소 중 필요한 부분을 코드에서 가져와 사용합니다.
가져올 때 실행되는 코드와 의존 관계
Python의 모듈 초기화 설명에 따르면 모듈은 함수 정의 외에 실행문을 포함할 수 있고, 이런 문장은 처음 가져올 때 실행됩니다. 함수 이름을 등록하는 것만 생각하고 모듈을 읽으면 초기화 중 발생하는 동작을 놓칠 수 있습니다. 파일의 맨 위 수준에서 어떤 값을 만들거나 작업을 시작하는지까지 살피면, 함수를 명시적으로 호출하기 전에 일어나는 일을 구분할 수 있습니다.
일반적인 Python 가져오기에서는 같은 인터프리터 세션 안에서 모듈을 반복해서 가져와도 처음처럼 매번 초기화하지 않습니다. 같은 안내는 수정한 모듈을 다시 반영하려면 인터프리터를 재시작하거나 별도의 다시 불러오기 기능을 사용하는 방법을 설명합니다. 모듈을 가져오는 것은 독립적인 프로그램 프로세스를 매번 시작하는 것과도 다릅니다. 코드 파일을 여러 개로 나누는 것과 여러 작업을 동시에 실행하는 것은 서로 다른 구성입니다.
한 모듈이 다른 모듈을 가져오면 두 구성요소 사이에 의존 관계가 생깁니다. 사용하던 이름을 바꾸거나 외부에 제공하던 함수를 없애면 이를 가져오는 쪽도 영향을 받습니다. 모듈 내부만 고치는 변경과 다른 모듈에 제공하는 약속을 바꾸는 변경을 구분하면 수정 범위를 찾기 쉽습니다. 파일 하나의 내용만 살피기보다 어디에서 무엇을 가져오고 내보내는지 확인하면, 오류가 이어지는 경로를 추적할 수 있습니다.
관련 용어
모듈 (Module)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
