[파이썬] argparse의 내부 작동 원리

argparse는 다음과 같은 세 가지 단계로 내부적으로 작동합니다.

  1. Parser 객체 생성 및 인자 구성
    • argparse는 ArgumentParser 클래스를 사용하여 Parser 객체를 생성합니다. ArgumentParser 클래스의 인스턴스는 인자를 구성하고 파싱하는 데 사용됩니다.
    • Parser 객체를 생성한 후에는 add_argument() 메서드를 사용하여 스크립트가 인식해야 하는 인자들을 정의합니다. 이 메서드를 사용하여 인자의 이름, 기본값, 도움말 텍스트, 데이터 유형 등을 설정할 수 있습니다.
  2. 인자 파싱
    • parse_args() 메서드를 호출하여 argparse가 명령행 인자들을 분석하고 사용자에게 전달된 값을 반환합니다.
    • 인자 파싱 단계에서는 사용자가 프로그램 실행 시 전달한 인자들을 분석하여 해당하는 값으로 변환합니다. 이 때, 인자의 유효성 검사, 선택적 인자의 디폴트 값 설정 등의 작업이 이루어집니다.
  3. 인자 값 사용
    • 파싱된 인자들은 argparse에서 지정한 데이터 유형에 맞게 변환되어 사용할 수 있습니다.
    • 사용자는 이러한 인자 값을 직접 사용하여 스크립트의 동작을 조작할 수 있습니다. 예를 들어, 파일 경로, 숫자, 불리언 값 등을 사용할 수 있습니다.

이제 위에서 설명한 argparse의 내부 작동 원리를 예시 코드를 통해 살펴보겠습니다.

import argparse

# 1. Parser 객체 생성 및 인자 구성
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

# 2. 인자 파싱
args = parser.parse_args()

# 3. 인자 값 사용
print(args.accumulate(args.integers))

위의 코드에서는 ArgumentParser 객체를 생성하고, integers라는 위치 인자와 --sum이라는 선택적 인자를 정의합니다. parse_args() 메서드는 인자들을 분석하고, 파싱된 인자들은 args 객체에 저장됩니다. 마지막으로, args 객체의 속성을 사용하여 인자 값을 출력합니다.

이와 같이 argparse는 사용자가 스크립트에 전달하는 인자들을 손쉽게 처리할 수 있도록 도와줍니다. 내부적으로는 인자를 구성하고 파싱하는 과정을 거쳐 사용자가 제공한 값을 적절하게 처리합니다.