💻 프로그래밍/Python

[파이썬] *args, **kwargs

gameuiux 2024. 5. 26. 21:21
728x90
반응형

*args

args는 파이썬에서 가변 인수를 받을 때 사용되는 관용적인 이름이다.

이는 "arguments"의 약어로, 함수에 전달되는 여러 인수를 의미

주로 *args와 함께 사용되며, 이를 통해 함수가 가변적인 수의 위치 인수를 받을 수 있다.

관용적 사용
args는 관용적인 이름으로, 코드를 읽는 사람에게 이 변수는 함수에 전달된 여러 인수를 의미한다는 것을 쉽게 이해시킨다. 이는 명명 규칙으로 확립된 것이며, 꼭 args를 사용해야 하는 것은 아니지만, 이를 따르는 것이 가독성 면에서 좋다.

def example_function(*args):
    for arg in args:
        print(arg)

example_function(1, 2, 3)  # 출력: 1 2 3

 

다른 이름 사용
*args는 관용적인 이름일 뿐, 어떤 이름도 사용할 수 있다.

중요한 것은 *를 사용하는 것이다. 예를 들어, *numbers나 *elements와 같이 의미 있는 이름을 사용할 수도 있다.

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

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

 

*args의 일반적 의미
가변 인수 처리: 함수가 호출될 때 전달되는 임의의 수의 인수를 처리할 수 있게 한다.
코드 유연성 증가: 다양한 수의 인수를 받을 수 있어 함수의 유연성이 증가
가독성 향상: args는 "arguments"의 약어로, 관용적으로 사용되며 가변 인수를 처리하는 함수임을 쉽게 이해할 수 있게 함.

예제 1: 가변 인수의 합계 계산

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

print(sum_all(1, 2, 3))  # 출력: 6
print(sum_all(4, 5, 6, 7, 8))  # 출력: 30

예제 2: 여러 문자열 출력

def print_strings(*args):
    for string in args:
        print(string)

print_strings("Hello", "World", "!")
# 출력:
# Hello
# World
# !

예제 3: 위치 인수와 키워드 인수 혼합

def display_info(title, *args, **kwargs):
    print(f"Title: {title}")
    for arg in args:
        print(f"Arg: {arg}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

display_info("Person Info", 1, 2, name="Alice", age=30)
# 출력:
# Title: Person Info
# Arg: 1
# Arg: 2
# name: Alice
# age: 30

 

*args는 함수가 다양한 수의 인수를 처리할 수 있도록 하여 함수 정의의 유연성을 높이고,

여러 상황에 대처할 수 있게 한다.

 

 

 

**kwargs

kwargs는 파이썬에서 가변 키워드 인수를 받을 때 사용되는 관용적인 이름이다.

이는 "keyword arguments"의 약어로, 함수에 전달되는 여러 키워드 인수를 의미

주로 **kwargs와 함께 사용되며, 이를 통해 함수가 가변적인 수의 키워드 인수를 받을 수 있다.

관용적 사용
kwargs는 관용적인 이름으로, 코드를 읽는 사람에게 이 변수는 함수에 전달된 여러 키워드 인수를 의미한다는 것을 쉽게 이해시킨다. 이는 명명 규칙으로 확립된 것이며, 꼭 kwargs를 사용해야 하는 것은 아니지만, 이를 따르는 것이 가독성 면에서 좋다.

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

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

 

다른 이름 사용
**kwargs는 관용적인 이름일 뿐, 어떤 이름도 사용할 수 있다.

중요한 것은 **를 사용하는 것이다. 예를 들어, **options나 **settings와 같이 의미 있는 이름을 사용할 수도 있다.

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

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

 

**kwargs의 일반적 의미
가변 키워드 인수 처리: 함수가 호출될 때 전달되는 임의의 수의 키워드 인수를 처리할 수 있게 한다.
코드 유연성 증가: 다양한 키워드 인수를 받을 수 있어 함수의 유연성이 증가
가독성 향상: kwargs는 "keyword arguments"의 약어로, 관용적으로 사용되며 가변 키워드 인수를 처리하는 함수임을 쉽게 이해할 수 있게 한다.

예제 1: 사용자 정보 출력

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

print_user_info(name="Alice", age=30, email="alice@example.com")
# 출력:
# name: Alice
# age: 30
# email: alice@example.com

예제 2: 가변 키워드 인수와 다른 매개변수의 혼합

def describe_pet(pet_name, animal_type='dog', **kwargs):
    print(f"\nI have a {animal_type}.")
    print(f"My {animal_type}'s name is {pet_name}.")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

describe_pet('Willie', breed='Labrador', age=5)
# 출력:
# I have a dog.
# My dog's name is Willie.
# breed: Labrador
# age: 5

예제 3: 함수 내부에서 키워드 인수 처리

def build_profile(first, last, **user_info):
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile

user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')
print(user_profile)
# 출력:
# {'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}

 

**kwargs는 함수가 다양한 수의 키워드 인수를 처리할 수 있도록 하여 함수 정의의 유연성을 높이고,

여러 상황에 대처할 수 있게 한다.

728x90
반응형