소개
프로그램을 작성하다 보면 인수가 제공되면 해당 값을 사용하고, 제공되지 않으면 미리 정의된 기본값으로 동작하도록 만들어야 하는 경우가 자주 있습니다. 이번 글에서는 Python 표준 라이브러리의 argparse 모듈을 사용해 이러한 선택적 인수를 처리하는 방법을 알아보겠습니다.
규칙은 간단합니다.
- 대시(
--)로 시작하는 매개변수는 선택적(optional) 인수로 취급됩니다. 생략할 수 있으며, 기본값(default)을 가질 수 있습니다. - 대시로 시작하지 않는 매개변수는 위치 인수(positional argument)로, 일반적으로 필수이므로 기본값을 갖지 않습니다.
구현 방법
예제 코드
import argparse
parser = argparse.ArgumentParser(description='Optional Argument Example')
parser.add_argument('-n', '--name', metavar='name',
default='World', help='Say Hello to <>')
args = parser.parse_args()
print(f"Hello {args.name}")
metavar는 사용법(usage) 화면에서 해당 인수를 설명하는 형태로 표시되는 이름입니다. 또한 -n과 --name은 각각 짧은 옵션(short option)과 긴 옵션(long option) 이름을 나타냅니다.
1. 실행 전 도움말 메시지 확인하기
먼저 프로그램을 실행하기 전에 -h 옵션으로 도움말 메시지를 확인해 보겠습니다.
>>> python test.py -h usage: test.py [-h] [-n name] Optional Argument Example optional arguments: -h, --help show this help message and exit -n name, --name name Say Hello to <<name>>
2. 인수 없이 프로그램 실행하기
아무 매개변수도 전달하지 않고 실행하면, default로 지정한 값이 사용됩니다.
>>> python test.py Hello World
3. 선택적 인수에 값 전달하기
"Universe"라는 이름으로 인사하고 싶다면, 선택적 인수를 사용할 때 반드시 --name 또는 -n 뒤에 값을 지정해야 합니다.
>>> python test.py --name Universe Hello Universe >>> python test.py -n Universe Hello Universe
정리
마지막으로 두 인수 유형의 차이를 표로 정리하면 다음과 같습니다.
| 유형 | 예시 | 필수 여부 | 기본값 |
|---|---|---|---|
| 선택적(Optional) | -n (짧은), --name (긴) | 아니요 | 설정 가능 |
| 위치(Positional) | name, number 등 | 예 | 없음 |
이처럼 argparse를 활용하면 명령줄 인터페이스(CLI)에서 유연하고 직관적인 인수 처리를 손쉽게 구현할 수 있습니다.