본문 바로가기

언어/Python

[ Python ] 가변 인수 리스트 **kwargs를 사용하기

반응형

파이썬에서 **kwargs는 키워드 인수들을 함수에 전달할 때 사용됩니다. **kwargs는 키워드 인수들을 받아들이며, 함수 내에서는 딕셔너리 형태로 처리됩니다. 이를 통해 함수가 호출될 때, 임의의 수의 키워드 인수를 받을 수 있습니다. **kwargs의 사용법과 다양한 예제를 소개하겠습니다.

1. **kwargs의 기본 사용법

기본 사용법

**kwargs를 사용하여 함수에 키워드 인수들을 전달합니다. 함수 내에서는 kwargs가 딕셔너리로 전달된 인수들을 포함하게 됩니다.

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

# 함수 호출
example_function(name="John", age=30, city="New York")
# 출력:
# name: John
# age: 30
# city: New York

2. 예제 1: 기본 사용 예제

**kwargs를 사용하여 함수에 여러 키워드 인수를 전달하고 출력하는 예제입니다.

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

print_details(name="Alice", age=25, job="Engineer")
# 출력:
# name: Alice
# age: 25
# job: Engineer

3. 예제 2: 기본값 제공

기본값을 제공하고, 제공되지 않은 경우 기본값을 사용하는 예제입니다.

def print_info(name, age=18, **kwargs):
    print(f"Name: {name}")
    print(f"Age: {age}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Bob", city="Los Angeles", job="Designer")
# 출력:
# Name: Bob
# Age: 18
# city: Los Angeles
# job: Designer

4. 예제 3: 딕셔너리를 사용하여 인수 전달

이미 존재하는 딕셔너리를 사용하여 **kwargs로 인수를 전달할 수 있습니다.

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

person_info = {
    "name": "Carol",
    "age": 22,
    "city": "Chicago"
}

display_person_info(**person_info)
# 출력:
# name: Carol
# age: 22
# city: Chicago

5. 혼합된 인수 사용

함수에서 **kwargs를 다른 인수와 혼합하여 사용할 수 있습니다. 이 경우, **kwargs는 마지막에 와야 합니다.

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

mixed_args(1, 2, a=3, b=4, c=5)
# 출력:
# arg1: 1
# arg2: 2
# a: 3
# b: 4
# c: 5

6. *args**kwargs 함께 사용

*args**kwargs를 함께 사용하여 위치 인수와 키워드 인수를 모두 받을 수 있습니다.

def combined_args_kwargs(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)

combined_args_kwargs(1, 2, 3, x=10, y=20)
# 출력:
# args: (1, 2, 3)
# kwargs: {'x': 10, 'y': 20}

7. 함수 호출 시 ** 사용

함수 호출 시에도 **를 사용하여 딕셔너리를 인수로 분해할 수 있습니다.

def example_function(a, b, c):
    print(a, b, c)

kwargs = {'a': 1, 'b': 2, 'c': 3}
example_function(**kwargs)  # 출력: 1 2 3

8. 예제 코드 요약

아래는 다양한 방식으로 **kwargs를 사용하는 예제입니다.

# 기본 사용 예제
def print_all(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_all(name="Alice", age=30)
# 출력:
# name: Alice
# age: 30

# 기본값 제공 예제
def print_info(name, age=18, **kwargs):
    print(f"Name: {name}")
    print(f"Age: {age}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Bob", city="New York")
# 출력:
# Name: Bob
# Age: 18
# city: New York

# 딕셔너리로 인수 전달 예제
def show_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

info = {"name": "Charlie", "age": 35, "city": "Boston"}
show_info(**info)
# 출력:
# name: Charlie
# age: 35
# city: Boston

# 혼합된 인수 사용 예제
def mixed_args(arg1, arg2, **kwargs):
    print("arg1:", arg1)
    print("arg2:", arg2)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

mixed_args(1, 2, a=3, b=4)
# 출력:
# arg1: 1
# arg2: 2
# a: 3
# b: 4

# *args와 **kwargs 함께 사용 예제
def combined_args_kwargs(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)

combined_args_kwargs(1, 2, 3, x=10, y=20)
# 출력:
# args: (1, 2, 3)
# kwargs: {'x': 10, 'y': 20}

# 함수 호출 시 ** 사용 예제
def function(a, b, c):
    print(a, b, c)

kwargs = {'a': 1, 'b': 2, 'c': 3}
function(**kwargs)  # 출력: 1 2 3

이 예제들을 통해 **kwargs의 사용 방법과 유용성을 이해할 수 있습니다. **kwargs는 다양한 수의 키워드 인수를 유연하게 처리할 수 있게 해주는 강력한 기능입니다.

반응형