【Python 인수 완전 해설】 위치 인수, 키워드 인수, *args, **kwargs 사용법

1. Python의 인수란 무엇인가?

Python에서 인수는 함수나 메서드가 외부로부터 데이터를 받아 특정 작업을 수행하기 위한 수단입니다. 함수에 인수를 전달함으로써 유연한 데이터 처리가 가능해지고, 프로그램의 재사용성 및 확장성이 향상됩니다. 이 기사에서는 Python 인수의 기본부터 응용까지 단계적으로 설명합니다.

함수와 인수의 기본적인 역할

함수는 특정 작업을 수행하기 위한 명령의 집합체입니다. 인수는 함수에 전달되는 입력 데이터이며, 아래와 같이 사용합니다.
def greet(name):
    print(f"안녕, {name}!")
이 예에서는 인수name에 원하는 이름을 전달함으로써 개별 메시지를 표시할 수 있습니다.
greet("佐川")  # 출력: 안녕, 사가와!

2. Python에서 인수의 기본

다음으로, Python에서 인수를 사용하는 방법을 위치 인수, 키워드 인수, 기본값 인수 관점에서 살펴보겠습니다。

위치 인수와 그 중요성

위치 인수는 함수가 호출될 때, 인수가 지정된 순서에 따라 함수 내부의 매개변수에 전달됩니다。
def add(a, b):
    return a + b

result = add(5, 3)  # 결과: 8

키워드 인수를 사용하기

키워드 인수를 사용하면, 인수 순서를 신경 쓰지 않고 함수에 명시적으로 값을 전달할 수 있습니다。
def introduce(name, age):
    print(f"저는 {name}입니다. 나이는 {age}살입니다.")

introduce(age=25, name="佐川")  # 출력: 저는 佐川입니다. 나이는 25살입니다。

기본 인수 활용

기본 인수를 설정하면, 인수가 생략될 때 기본값을 사용할 수 있습니다。
def greet(name="게스트"):
    print(f"안녕하세요, {name}!")

greet()  # 출력: 안녕하세요, 게스트!

인수 순서

위치 인수와 키워드 인수를 동시에 사용할 경우, 위치 인수를 먼저, 키워드 인수를 나중에 지정해야 합니다. 순서를 잘못하면 오류가 발생합니다。

3. Python의 가변 인자(*args와 **kwargs)

*args 사용법

*args는 임의 개수의 위치 인자를 함수에 전달하기 위해 사용됩니다. 이를 통해 함수를 보다 일반적으로 만들 수 있습니다。
def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3)  

**kwargs 사용법

**kwargs를 사용하면 임의의 키워드 인자를 사전 형태로 받을 수 있습니다。
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="사가와", age=30, job="작가")  

*args**kwargs의 조합

*args**kwargs를 결합함으로써 위치 인자와 키워드 인자를 모두 받을 수 있는 유연한 함수를 만들 수 있습니다。
def process_data(*args, **kwargs):
    total = sum(args)
    print(f"합계: {total}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

process_data(1, 2, 3, name="사가와", age=30)

4. 인수의 응용 및 활용 예

실전 응용 예: API 파라미터 처리

API 호출에서는 동적인 파라미터를 처리할 필요가 있습니다.*args**kwargs를 사용하면, 여러 파라미터를 유연하게 다룰 수 있습니다.
def api_call(endpoint, **params):
    print(f"API 엔드포인트: {endpoint}")
    for key, value in params.items():
        print(f"{key}: {value}")

api_call("/user", id=123, action="view")

대규모 데이터 처리에 대한 응용

대량의 데이터를 처리하는 함수에서도, *args를 사용하여 가변 길이 인자를 효율적으로 다룰 수 있습니다.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. 인수 오류 처리와 검증

인수 개수에 대한 오류 처리

함수가 기대하는 인수 개수가 부족한 경우, 오류 처리를 수행함으로써 프로그램이 크래시되는 것을 방지할 수 있습니다.
def add_numbers(*args):
    if len(args) < 2:
        raise ValueError("최소 2개의 인수가 필요합니다")
    return sum(args[:2])

형식 검증

인수의 타입을 확인함으로써 예상치 못한 오류를 방지할 수 있습니다.
def multiply(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("인수는 숫자여야 합니다")
    return a * b

try-except를 사용한 오류 처리

try-except 구문을 사용함으로써 오류를 잡아 적절히 처리할 수 있습니다.
def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "0으로 나눌 수 없습니다"
    except TypeError:
        return "숫자를 입력해주세요"
    return result

6. 요약

이 글을 통해 Python 인자의 기본부터 응용까지 폭넓게 다루었습니다. 특히 *args**kwargs를 사용한 유연한 함수 정의 방법과 오류 처리, 검증의 중요성을 강조하고 싶습니다.

주요 포인트:

  • 위치 인자, 키워드 인자, 기본값 인자의 기초
  • *args**kwargs를 사용한 유연한 함수 정의
  • 인자에 대한 오류 처리와 검증의 중요성
이러한 지식을 바탕으로 실무에 도움이 되는 유연하고 견고한 Python 코드를 작성할 수 있게 됩니다.