2.18. 모듈 사용하기

모듈 은 여러 스크립트에서 재사용할 수 있도록 패키징된 Python 코드(함수, 클래스, 상수)의 모음입니다. Python에는 모듈로 가득 찬 표준 라이브러리가 함께 제공되며, OpenMV 펌웨어는 카메라와 통신하기 위한 모듈을 더 추가합니다. 모듈에 접근하는 일은 import 로 이루어집니다.

2.18.1. import

가장 직접적인 형식은 모듈 전체를 그 자체의 이름으로 가져옵니다:

import math

print(math.sqrt(2))

출력:

1.4142135623730951

import 이후에는 math 가 정의한 모든 이름을 math.<name> 으로 접근할 수 있습니다. 모듈 이름은 그 파일명(.py 제외)에서 옵니다. 네임스페이스 접두사는 같은 함수 이름을 가진 두 모듈이 충돌하는 것을 막아 줍니다.

2.18.2. from … import

특정 이름을 현재 스코프로 직접 가져오려면 from 을 사용하세요:

from math import sqrt, pi

print(sqrt(2), pi)

출력:

1.4142135623730951 3.141592653589793

이제 네임스페이스 접두사가 없습니다. 자주 쓰이는 이름에는 편리하지만, 많은 이름을 가져오는 from 임포트는 각 이름이 어디서 왔는지 알기 어렵게 만듭니다. 더 큰 스크립트에서는 보통 평범한 import math 가 더 명확합니다.

별표 형식 from math import * 는 모듈이 내보내는 모든 것 을 가져옵니다. 이것은 건너뛰세요. 네임스페이스를 오염시키고 IDE의 자동 완성을 방해합니다.

2.18.3. as로 별칭 붙이기

긴 모듈 이름은 as 로 줄일 수 있습니다:

import json as j

j.dumps({"ok": True})

같은 요령이 from 으로 가져온 개별 이름에도 동작합니다:

from math import sqrt as root

root(9)              # 3.0

일반적인 Python 코드에서는 원래 이름이 정말로 길거나 이미 스코프에 있는 다른 것과 충돌할 때만 별칭을 붙이세요.

2.18.4. 사용 가능한 모듈

라이브러리 레퍼런스 는 카메라에 탑재된 모든 모듈을 나열합니다. MicroPython 표준 라이브러리와, 이미지 센서를 구동하고 머신 비전을 실행하며 온보드 하드웨어를 제어하는 OpenMV 전용 모듈입니다. 이들 모두는 위에서 보인 것과 동일한 import 메커니즘을 사용합니다.