개요
Python 프로그래밍을 하다보면 함수에 정해진 파라미터 외에도 동적으로 인자를 전달해야 하는 경우가 발생한다. 이러한 인자를 가변(可變)인자라고 하는데, 가능할 가(可) 변할 변(變)을 의미한다. 쉽게 말해, 런타임 도중 정해진 갯수만큼의 인자가 넘어가는 것이 아닌 로직에 따라 변할 수 있는 길이의 인자가 함수의 파라미터로 전달되는 것을 의미한다. Python에서 지원하는 가변인자의 종류는 크게 2종류이다.
- args : arguments, 인자의 iterables만 전달되는 형태
- kwargs : keyword arguments, 인자의 매개변수명과 인자가 딕셔너리의 키-밸류로 구성되어 전달되는 형태
args
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'가 담긴 리스트가 전달된다. 고로 인자에 직접 입력해주어도 되지만 리스트를 통째로 보내도 된다. 리스트의 길이는 상관없다.
kwargs
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' 카테고리의 다른 글
| 덕 타이핑 (Duck Typing) (2) | 2020.12.29 |
|---|---|
| 추상 베이스 클래스 (Abstract Base Class) (0) | 2020.12.28 |
| pickle 모듈 (0) | 2020.12.18 |
| 접근제한자 (Access Modifier) (0) | 2020.12.14 |
| 정적 메소드 staticmethod, classmethod, instancemethod (0) | 2020.12.09 |