해당 카테고리에는 파이썬의 기초문법(반복문, 조건문, 변수, 클래스 등..)을 숙지하고 있다는 전재하에 작성한다. 파이썬 개발을 하면서 몰랐던 키워드나 개념등을 위주로 작성할 예정이다..
개발을 하다보면 어떤 클래스의 정의를 찾아갈 때 Pycharm기준으로 Ctrl + B 단축키를 사용하면 된다. 메소드의 정의를 찾아간다고 가정할 때, 종종 *args 나 **kwargs 키워드를 본적이 있을 것이다. 필자는 무아지경상태에 빠졌다. 무아지경은 무지를 아무렇지 않게 받아들이는 경지를 의미한다. 그 경지를 넘어서고자 이 키워드들을 이해하기 위해 공부를 하고 이해한 내용을 포스트에 정성스레 적는다.
일단 args와 kwargs의 뜻부터 알아보자.
args : arguments (복수형) 즉, 가변(여러개가 올 수 있는) 인자이다.
kwargs : keyword arguments 가변 키워드 인자이다.
이제 코드로 이해할 차례이다.
def arg_func(*args):
for idx, arg in enumerate(args):
print(idx, arg)
if __name__ == '__main__':
# 인자에 직접 입력
arg_func(10, 20, 'a')
# 리스트로 입력
l = [10, 20, 'a']
arg_func(*l)
arg_func(10, 20, 'a')를 호출하게 되면 *args인자에는 10, 20, 'a'가 담긴 리스트가 전달된다. 고로 인자에 직접 입력해주어도 되지만 리스트를 통째로 보내도 된다. 리스트의 길이는 상관없다. (가변이니까)
def kwarg_func(**kwargs):
for item in kwargs.item():
print(item)
if __name__ == '__main__':
kwarg_func(x=10, y=20, z='a')
d = {'x': 10, 'y': 20, 'z': 'a'}
kwarg_func(**d)
kwargs_func(x=10, y=20, z='a')를 호출하게 되면 **kwargs에는 키(워드)값이 x, y, z인 딕셔너리가 전달된다. *arg와 마찬가지로 길이는 상관없다.
출력결과는 적지않겠다. 직접 해보기를 바라는 마음에서..
'[Language] - Python' 카테고리의 다른 글
#5. 덕 타이핑 (Duck Typing) (2) | 2020.12.29 |
---|---|
#4. 추상 클래스 (Abstract Class) (0) | 2020.12.28 |
#3. pickle 모듈 (0) | 2020.12.18 |
#2. 접근제한자 (Access Modifier) (0) | 2020.12.14 |
#1. staticmethod, classmethod, instancemethod (0) | 2020.12.09 |
댓글