23 — 모듈: 프로그램을 여러 파일로 나누기
작은 프로그램은 파일 하나로 충분합니다. 프로젝트가 커지면 파일을 나눠 각 파일에 집중하게 만듭니다. NME는 목록에 적은 이름만 가져오므로 모든 모듈이 명확한 인터페이스를 갖고, 파일 사이에 다른 것은 새지 않습니다.
단계
공용 함수를 모듈 파일에 둡니다. 모듈은 전체 프로그램을 실행하는 대신 값을 정의하는 평범한
.nme파일입니다:
실행해 보기 →# shapes.nme def rect(width, height): return width * height def circle(radius): return 3.14 * radius * radius주 프로그램에서 필요한 이름을 가져옵니다:
# area.nme from "shapes.nme" import rect, circle 말해 rect(4, 5) 말해 circle(2)주 프로그램을 실행하면 NME가 옆에 있는
shapes.nme를 찾습니다:nme 실행 area20 12.56준비된 예제 쌍은
examples/modules/에 있습니다 —area.nme와shapes.nme, 그리고_ko한국어 쌍.가져오기 이름 목록이 곧 인터페이스입니다.
rect와circle만area.nme로 넘어오고, 모듈의 다른 것은 비공개로 남습니다. 가져온 이름도 다른 값처럼 문장에서 쓸 수 있습니다:from "shapes.nme" import rect 말해 rect(3, 7)
기억할 규칙
- 모듈 파일은 주 프로그램 옆에 있습니다.
- 파일 이름은 Python 식별자입니다:
my-shapes.nme가 아니라shapes.nme. - 가져오기는 이어질 수 있습니다. 모듈이 다른 모듈을 가져올 수 있어요.
nme 검사와nme 빌드는 가져온 모듈도 확인합니다.
직접 해보기
shapes.nme에 perimeter(width, height) 함수를 추가하고, area.nme에서
가져와 가로 4, 세로 5 직사각형의 둘레를 보여 주세요.
배운 것
from "helper.nme" import name1, name2는 목록에 적은 이름만 가져옵니다.- 모듈은 같은 폴더에 있는 평범한
.nme파일입니다. - 가져온 이름은 문장과 호출에서 로컬 값처럼 씁니다.
- 명확한 인터페이스는 파일 사이에 숨은 전역 상태가 없음을 뜻합니다.