딥러닝
*args와 **kwargs 쓰임
지웅쓰
2022. 12. 30. 22:14
딥러닝 모델들을 공부하다 다른 사람들의 모델들의 코드를 보고 공부할 때가 있는데
함수 내에 *args 혹은 **kwargs 가 들어간 것을 심심찮게 볼 수 있다.
예전부터 봐왔었고 그럴 때마다 궁금해서 쳐봤는데 이번에 정리하려고한다.
*args 란?
args 는 arguments 의 줄임말이다.
우리가 함수를 정의할 때 앞으로 쓰일 모든 것들을 미리 파라미터로 정의하면 좋겠지만 그러지 못할 때도 있다.
그럴 때 필요한 것들만 미리 정의해놓고 나머지는 *args로 남겨두는 것이다. 예시로 한번 살펴보겠다.
def myfunction(first, second, *args):
print(first, second)
for arg in args:
print(arg)
myfunction('세수하기','공부하기', '운동하기','책읽기','유튜브보기기')
세수하기 공부하기
운동하기
책읽기
유튜브보기기
정의한 함수에서는 오늘 할 일들을 넣었다 하자. 그러나 2가지 제외하고 뭔가 할 일이 더 있을수 있다고 생각해 *args로 남겨둔 것이다.
그리고 만약 할 일들이 추가되었을 때 함수는 이미 *args를 받은 상태이므로 함수에 따로 정의없이 넣어도 되는 것이다.
**kwargs 란?
keyword arguments 의 줄임말이다.
여기서 keyword argument란 함수에서 first = '세수하기', second = '공부하기' 처럼 미리 정의한 것이다.
이것 또한 예시로 살펴보겠다.
def myfunction(first, second, **kwargs):
print(first, second)
for kwarg in kwargs.items():
print(kwarg)
myfunction('세수하기','공부하기', c = '운동하기',d = '책읽기',e = '유튜브보기')
세수하기 공부하기
('c', '운동하기')
('d', '책읽기')
('e', '유튜브보기')
기존 함수에서는 keyword argument가 없지만 **kwargs를 통해 실제로는 마음대로 받을 수 있는 것이다.