1. *args
args는 파이썬에서 가변 갯수의 인자를 받는 함수를 정의할 때 사용된다. *args를 사용하면 호출할 때 많은 인자들을 한 키워드에 담아 전달 할 수 있게되는것이다. 이렇게 전달된 인자들은 튜플 형태로 꺼내 쓸 수 있다.
def name(name1, name2, name3):
print(name1, name2, name3)
name("홍길동", "허균", "허난설헌")
def name(*args):
print(*args)
name("홍길동", "허균", "허난설헌")
# 홍길동, 허균, 허난설헌
*args를 사용하면 위처럼 많은 매개인자를 사용해야할때 한번에 줄일 수 있다.
간단히 두수를 받아 더하는 사칙연산코드를 작성해보자.
def plus(a, b):
return a + b
두개의 매개인자가 필요하기 때문에 위와같이 작성하면 된다. 하지만 만약 더하는 매개인자를 정하지 않고 무조건 넣고 싶을때는 어떻게 해야할까? 변수를 a ~ z 까지 모두 입력하는 것은 비효율적일 것이다. 따라서 *args를 통해 계산해보자
def plus(a, b, *args):
print(args)
return a + b
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # (3, 4, 5, 6, 7, 8, 9, 10)
*args로 입력한 매개인자들이 오류없이 print되는것을 볼 수 있다.
cf) *args에 대한 plus함수에 대한 값을 구하고 싶을때는 무턱대고 return에 + args를 하면 오류가 발생할 것이다.
이때는 for문을 통해서 답을 구해야 한다.
또한 *args가 아닌 *Num으로 입력해도 동일하게 적용된다.
아래와 같이 말이다.
def plus(a, b, *args):
result = a + b
for num in args:
result += num
print(result)
return result
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) #55
2. **kwargs
**kwargs는 (키워드 = 값)의 형태로 함수를 호출하는것이 가능해진다.
파이썬의 여러가지 딕셔너리 형태로 매개인자를 받는 것이다.
이를 활용하면 이런식의 응용이 가능해진다.
def manyKwargs(**kwargs):
if kwargs is not None:
print (kwargs)
manyKwargs(name='Python', old='66', language='Computer')
# {'name': 'Python', 'old' : '66', 'language' : 'Computer'}
또는 아래와 같은 활용이 가능하다.
def profile(**kwargs):
for k, v in kwargs.items():
print(k, v)
# 사용법1
profile(name='michael', country='korea', age='999')
# 사용법2
k = {
'name': 'michael',
'country': 'korea',
'age': '999'
}
profile(**k)
"""
name michael
country korea
age 999
"""
3. *args와 **kwargs를 함께 사용하기
때로는 일반 인자와 키워드 인자를 동시
에 처리해야 하는 경우가 있습니다. 이럴 때는 *args와 **kwargs를 함께 사용할 수 있습니다. 다만, 이 두 매개변수의 순서에 주의해야 합니다. 일반적으로 *args가 먼저 오고 **kwargs가 뒤에 위치합니다.
예시를 살펴봅시다.
def combined_function(*args, **kwargs):
print("일반 인자들:")
for arg in args:
print(arg)
print("\n키워드 인자들:")
for key, value in kwargs.items():
print(f"{key}: {value}")
combined_function(1, 2, 3, name="홍길동", age=30, job="프로그래머")
"""
('apple', 'banana')
{'drink': 'coffee', 'dessert': 'icecream'}
"""
위의 예시에서, combined_function은 *args와 **kwargs를 동시에 사용하여 일반 인자들과 키워드 인자들을 모두 처리합니다. 함수를 호출할 때 전달된 인자들은 각각 튜플과 딕셔너리 형태로 저장되며, 이를 이용해 각각의 값을 출력합니다.
결론
*args와 **kwargs는 파이썬에서 함수를 작성할 때 유연성을 높여주는 기능입니다. 이들을 이해하고 활용하면 여러 인자를 처리하는 함수를 더 간결하고 효과적으로 작성할 수 있습니다. 이 글을 통해 *args와 **kwargs에 대한 이해가 더욱 향상되었기를 바랍니다. 행복한 코딩 되세요!
'Python' 카테고리의 다른 글
[Python] 파이썬 - 10. format과 f-string의 활용 (0) | 2023.06.24 |
---|---|
[Python] 파이썬 - 09. 문자열(String)활용 (0) | 2023.05.20 |
[Python] 파이썬 - 07. 올림(ceil), 내림(floor), 반올림(round) (0) | 2023.03.25 |
[Python] 파이썬 - 06. 대입연산, 얕은 복사, 깊은 복사 (0) | 2023.03.11 |
[Python] 파이썬 - 05. 여러가지 포맷팅 방법 (%, {}, f-string) (0) | 2023.03.02 |