새소식

반응형
Python/문법

Python의 *args와 **kwargs: 함수 인자의 유연성 극대화하기

  • -
반응형

파이썬에서 함수를 더욱 유연하게 만들어주는 강력한 기능인 *args와 **kwargs에 대해 알아보겠습니다.

 

이 두 가지 문법을 이해하고 활용하면, 여러분의 코드는 한층 더 동적이고 확장 가능해질 것입니다.

 

*args: 위치 인자의 자유로운 확장

*args는 함수가 임의의 수의 위치 인자를 받을 수 있게 해줍니다. 함수 내부에서 args는 튜플로 처리됩니다.

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

print(sum_all(1, 2, 3))  # 출력: 6
print(sum_all(1, 2, 3, 4, 5))  # 출력: 15

이 예제에서 sum_all 함수는 몇 개의 인자가 전달되든 상관없이 모든 인자를 더해줍니다.

반응형

**kwargs: 키워드 인자의 무한한 가능성

**kwargs는 함수가 임의의 수의 키워드 인자를 받을 수 있게 해줍니다. 함수 내부에서 kwargs는 딕셔너리로 처리됩니다.

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30, city="New York")
# 출력:
# name: Alice
# age: 30
# city: New York

 

이 함수는 어떤 키워드 인자라도 받아 그 정보를 출력할 수 있습니다.

 

*args와 **kwargs의 결합: 궁극의 유연성

두 가지를 함께 사용하면, 위치 인자와 키워드 인자를 모두 자유롭게 다룰 수 있습니다.

def ultimate_function(*args, **kwargs):
    print("위치 인자:", args)
    print("키워드 인자:", kwargs)

ultimate_function(1, 2, 3, name="Alice", age=30)
# 출력:
# 위치 인자: (1, 2, 3)
# 키워드 인자: {'name': 'Alice', 'age': 30}

 

실전 활용: 함수 호출 시 시퀀스와 딕셔너리 언패킹

*와 **를 사용하여 시퀀스나 딕셔너리를 함수 인자로 풀어서 전달할 수도 있습니다.

def greet(name, age):
    print(f"안녕하세요, {name}님. 당신은 {age}세입니다.")

info = ["철수", 25]
greet(*info)  # 출력: 안녕하세요, 철수님. 당신은 25세입니다.

info_dict = {"name": "영희", "age": 30}
greet(**info_dict)  # 출력: 안녕하세요, 영희님. 당신은 30세입니다.

 

마치며

*args와 **kwargs는 파이썬 함수를 더욱 강력하고 유연하게 만들어주는 도구입니다. 이를 활용하면 함수의 재사용성을 높이고, 더 범용적인 코드를 작성할 수 있습니다. 특히 데코레이터래퍼 함수를 만들 때 이 기능들은 필수적입니다.

여러분의 코드에서 이 기능들을 적절히 활용해보세요. 더 우아하고 확장 가능한 코드를 작성하는 데 큰 도움이 될 것입니다!

다음에는 더 심화된 파이썬 기법들에 대해 다뤄보도록 하겠습니다. 파이썬과 함께하는 즐거운 코딩 되세요!

 
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.