파이썬은 그 유연성과 사용의 용이성으로 유명합니다. 이 중 하나의 강력한 기능은 함수의 인자로 `*args`와 `**kwargs`를 사용하는 것입니다. 이 두 표현은 파이썬에서 가변 인자를 처리하는 방법을 제공합니다. 이번 포스트에서는 이들의 사용법과 작동 원리를 자세히 살펴보겠습니다.
`*args` - 위치 인자의 가변성
`*args`는 함수가 임의의 개수의 위치 인자를 받을 수 있도록 해줍니다. 이를 사용하면 함수 호출 시 제공하는 인자의 수가 고정되어 있지 않아도 됩니다. 함수 내부에서 `args`는 튜플로 처리되며, 전달된 모든 위치 인자를 포함합니다.
def print_args(*args):
for arg in args:
print(arg)
print_args('Hello', 'Python', 'World')
이 예제에서 `print_args` 함수는 세 개의 인자를 받고, 각각을 순서대로 출력합니다. `*args`를 사용함으로써, 함수는 세 개, 네 개, 더 많은 인자를 받을 수 있게 됩니다.
`**kwargs` - 키워드 인자의 가변성
`**kwargs`는 함수가 임의의 개수의 키워드 인자를 받을 수 있도록 해줍니다. 이 방법으로 함수는 호출 시 각기 다른 키워드 인자를 받을 수 있으며, 함수 내부에서 `kwargs`는 딕셔너리로 처리됩니다. 이 딕셔너리는 인자의 이름을 키로, 전달된 값을 값으로 가집니다.
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(first='Python', second='is', third='awesome')
이 예제에서 `print_kwargs` 함수는 세 개의 키워드 인자를 받아, 각 키와 값을 출력합니다. `**kwargs`를 사용하면 함수는 다양한 이름의 인자를 받을 수 있습니다.
`*args`와 `**kwargs`의 결합 사용
이 두 표현은 함께 사용되어 함수가 위치 인자와 키워드 인자를 동시에 임의의 개수로 받을 수 있도록 할 수 있습니다.
def print_all(*args, **kwargs):
for arg in args:
print(arg)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_all('Learning', 'Python', first='is', second='fun')
이 코드는 위치 인자와 키워드 인자를 함께 받아 출력합니다.
가변 인자와 배열의 차이점
가변인자의 예시를보면 인자를 배열로 주는것과 무슨 차이가 있는것인지 에 대한 의문이 들 수 있습니다.
파이썬에서 가변 인자(*args와 **kwargs)를 사용하는 것과 배열(또는 리스트)를 매개변수로 넘겨주는 것 사이에는 중요한 차이점이 있습니다. 그 차이점은 바로 '매개변수의 생략 가능성'입니다.
배열을 매개변수로 넘겨주는 경우, 매개변수를 생략할 수 없으므로 빈 리스트를 전달하거나 None을 전달해야 합니다.
하지만 가변 인자를 사용하면 매개변수를 완전히 생략할 수 있습니다. 이로 인해 가변 인자는 함수 호출을 더 유연하게 만들어 줍니다.
이를 참조하여 파이썬 개발시 가변인자를 적절히 활용할 수 있으면 좋을 것 같습니다.
'Python' 카테고리의 다른 글
[Python] 페이지네이션으로 업비트에서 비트코인의 모든 1분봉 가져오기 (0) | 2024.03.13 |
---|---|
[Python] FastAPI를 사용해서 서버 만들기 (0) | 2024.03.03 |
[Python] 수집한 데이터 시각화하기 (0) | 2024.02.23 |
[Python] FastAPI에서 CORS 정책 적용하기 (0) | 2024.02.15 |
[Python] 죽지않는 웹소켓 만들기 (0) | 2024.02.14 |