파이썬의 가변인자 사용법

파이썬의 가변인자 사용법

Python
파이썬의 가변인자 사용법
Author

gabriel yang

Published

October 2, 2024


파이썬에서 가변 인자(Variable Arguments)는 함수에 전달되는 인자의 개수가 고정되어 있지 않을 때 유용하게 사용되는 기능입니다. 이를 통해 다양한 수의 인자를 처리할 수 있으며, 코드를 더 유연하게 만들 수 있습니다. 이번 글에서는 가변 인자를 사용하는 이유와 그 사용 방법을 예제 코드와 함께 설명하겠습니다.

1. 가변 인자란?

가변 인자는 함수 정의에서 인자의 앞에 *를 붙여서 사용할 수 있습니다. 이 경우, 함수에 전달된 인자들은 튜플 형태로 함수 내부에서 사용됩니다.

기본 문법

def function_name(*args):
    # 함수 본문
  • *args는 가변 인자를 의미하며, 함수 호출 시 전달된 모든 위치 인자를 튜플로 받아옵니다.

2. 가변 인자를 사용하는 이유

가변 인자는 여러 가지 이유로 유용합니다:

  1. 유연한 인자 수: 함수에 전달되는 인자의 수가 정해져 있지 않을 때 유용합니다. 사용자가 필요에 따라 원하는 만큼 인자를 전달할 수 있습니다.
  2. 코드 간결성: 인자 수가 다를 수 있는 여러 함수를 개별적으로 정의할 필요가 없으므로 코드가 더 간결해집니다.
  3. 리스트와 같은 자료구조와 통합: 리스트나 튜플과 같은 자료구조를 인자로 전달할 수 있습니다.

3. 가변 인자 사용 예시

예시 1: 기본적인 가변 인자

def print_numbers(*args):
    for number in args:
        print(number)

# 함수 호출
print_numbers(1, 2, 3, 4, 5)

출력:

1
2
3
4
5

위 예시에서 print_numbers 함수는 가변 인자 *args를 사용하여 여러 개의 숫자를 전달받아 출력합니다. 호출할 때 원하는 만큼의 숫자를 전달할 수 있습니다.

예시 2: 가변 인자와 리스트의 결합

가변 인자를 사용하여 리스트나 튜플을 인자로 전달할 수 있습니다.

def sum_numbers(*args):
    return sum(args)

# 리스트를 전달
numbers_list = [1, 2, 3, 4, 5]
result = sum_numbers(*numbers_list)  # 리스트를 언팩하여 전달
print(result)  # 15

출력:

15

이 예시에서는 sum_numbers 함수에 리스트 numbers_list를 전달합니다. 리스트를 *를 붙여 언팩(unpack)하여 가변 인자로 전달하면, 리스트의 각 요소가 함수에 개별적으로 인자로 전달됩니다.

예시 3: 가변 인자를 사용한 다양한 인자 처리

가변 인자를 사용하여 다양한 유형의 인자를 처리할 수 있습니다. 예를 들어, 문자열과 숫자를 함께 처리하는 함수를 만들어 보겠습니다.

def describe_person(name, *hobbies):
    print(f"{name}의 취미는 다음과 같습니다:")
    for hobby in hobbies:
        print(f"- {hobby}")

# 함수 호출
describe_person("최민수", "축구", "독서", "영화 감상")

출력:

최민수의 취미는 다음과 같습니다:
- 축구
- 독서
- 영화 감상

이 예시에서는 describe_person 함수가 이름과 가변 인자로 여러 취미를 받아 출력합니다. 사용자에게 취미를 추가로 전달할 수 있는 유연성을 제공합니다.

4. 가변 인자와 키워드 인자

가변 인자는 *args뿐만 아니라 키워드 가변 인자(**kwargs**)도 사용할 수 있습니다. 키워드 가변 인자는 함수에 전달된 키워드 인자를 딕셔너리 형태로 받아옵니다.

예시: 가변 인자와 키워드 인자 혼합 사용

def print_info(name, *args, **kwargs):
    print(f"이름: {name}")
    print("취미:")
    for hobby in args:
        print(f"- {hobby}")
    print("기타 정보:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 함수 호출
print_info("이영희", "수영", "여행", 나이=30, 직업="교사")

출력:

이름: 이영희
취미:
- 수영
- 여행
기타 정보:
나이: 30
직업: 교사

이 예시에서는 print_info 함수가 이름, 가변 인자, 키워드 가변 인자를 모두 사용합니다. 사용자는 원하는 만큼의 취미와 추가 정보를 키워드 인자로 전달할 수 있습니다.

5. 가변 인자의 주의사항

가변 인자를 사용할 때는 몇 가지 주의해야 할 사항이 있습니다:

  1. 인자 순서: 가변 인자는 항상 다른 위치 인자와 함께 사용할 수 있습니다. 하지만 가변 인자는 다른 인자들 뒤쪽에 위치해야 합니다.
  2. 인자의 데이터 타입: 가변 인자는 튜플 형태로 수집되므로, 데이터 타입에 대한 일관성을 유지할 필요가 있습니다.

예시: 가변 인자와 다른 인자 조합

def display_info(first_name, last_name, *args):
    print(f"이름: {first_name} {last_name}")
    print("추가 정보:")
    for arg in args:
        print(arg)

# 함수 호출
display_info("홍", "길동", "서울", "30세", "개발자")

출력:

이름: 홍 길동
추가 정보:
서울
30세
개발자

위 예시에서 display_info 함수는 두 개의 위치 인자와 가변 인자를 조합하여 사용하고 있습니다.

결론

가변 인자는 파이썬에서 매우 유용한 기능으로, 함수에 다양한 수의 인자를 유연하게 전달할 수 있는 방법입니다. 이 기능을 사용하면 함수 정의가 간결해지고, 다양한 인자 조합을 처리할 수 있어 코드의 재사용성과 가독성이 높아집니다.