팁뚠이 입니다. 파이썬 팁 시작입니다. 파이썬은 쉬운 언어로 많은 분들이 하다 보니, 인터넷에서 접할 수 있는 정보도 많고 책과 강의를 통해서도 익힐 수 있는 내용이 많습니다. 다만 많은 내용들이 코드 나열이나, 복잡한 해석 등이 많아 이해가 어려운 경우가 많습니다. 쉽게 익힐 수 있는 파이썬 개념을 팁들로 다루려고 합니다. 물론 기본적인 토픽 등은 워낙 다른 블로그나 책, 강의에서도 쉽게 설명했으니, 하다 보면 익숙하지 않은 개념들 위주로 다루겠습니다.
정해지지 않은 개수의 인자를 입력 받을 수 있는 문법
쉽게 말해, 입력이 몇 개인지, 입력 변수명이 무엇인지 알려주지 않아도 된다는 얘기입니다.
기본적으로 파이썬에서 함수를 사용 시, 정해진 개수의 입력을 합니다.
def test(apple, banana):
print(apple)
print(banana)
이 경우 test 함수의 인자로 두 개의 입력 변수를 받았습니다. 근데 만약 입력 개수를 알 수 없을 때는 어떻게 할까요?
가령 입력이 튜플이나 딕셔너리 형태로 알 수 없는 길이로 오는 경우엔 어떻게 할까요?
test("apple", "banana", "cinnmon")
test("apple", "banana", "cinnmon", "drums")
이렇게 입력의 개수가 정해지지 않고, 매번 바뀔 경우도 있습니다. 이 경우엔 우리가 함수에서 미리 입력을 지정할 수 없게 됩니다. 이 경우를 해결하기 위해 사용하는 게, *args와 **kwargs입니다.
*args: arguments의 약자
튜플을 입력으로 받음
*args를 함수 안에 사용하면, 개수가 정해지지 않은 튜플을 받을 수 있습니다. 쉽게 예제를 보면, 아래와 같습니다.
def test(*args):
print("args", args)
test("apple", "banana", "cinamon")
결과
args: ('apple', 'banana', 'cinamon')
*args로만 지정하면, 튜플로 들어오는 입력이 무엇인지는 모르겠지만, 통째로 args에 튜플 형태로 넣겠다는 의미입니다. 굉장히 편리하다 보니, 머신러닝에서나 aws 등에서도 많이 사용하는 문법입니다.
**kwargs: keyword arguments의 약자
딕셔너리를 입력으로 받음
이번엔 **kwargs입니다. 위의 *args와의 차이는 튜플이냐 딕셔너리냐의 차이입니다. 똑같이 입력 변수의 개수나 변수명 등 지정하지 않아도 받는 데로 kwargs에 지정하겠다는 의미입니다. 코드를 보겠습니다.
def test_kwargs(**kwargs):
print("kwargs:", kwargs)
test_kwargs(num = 27, city = "seoul")
결과
kwargs: {'num': 27, 'city': 'seoul'}
함수에 딕셔너리 형태의 입력을 넣으면, 자동으로 kwargs에 딕셔너리가 입력으로 들어갑니다. args와 차이는 앞에 k가 붙어서 keyword가 추가됐습니다. keyword는 말 그대로 딕셔너리 형태에서 key: value 형태에서 key를 나타냅니다. 따라서 kwargs는 딕셔너리를 지칭하는 게 드러납니다.
오늘은 *args와 **kwargs에 대해 알아봤습니다. 참고로 args와 kwargs에서 *, **만 사용해도 됩니다만 관용적으로 args와 kwargs를 쓰는 경향이 있습니다. *num, **numbers 이렇게 임의로 해도 무방합니다.
'파이썬팁' 카테고리의 다른 글
통계 부트스트랩(Bootstrap) 개념 파이썬을 이용해 알아보기 (0) | 2022.04.18 |
---|---|
통계 중심극한정리 개념 파이썬 코드로 이해하기 (0) | 2022.04.17 |
파이썬 속도를 빠르게 numpy 브로드캐스트를 사용하기 (0) | 2022.04.16 |
파이썬 클래스 상속 개념 잡기 (0) | 2022.04.08 |
파이썬 _과 __은 무슨 의미를 가질까요? public, private 속성 (0) | 2022.04.03 |