파이썬 * 와 **
C/C++ 에서는 에스터리스크(*)가 포인터를 상징하지만 파이썬에서는 포인터가 없다.
파이썬의 에스터리스크는 매개변수에서 위치 인자 변수들을 튜플로 묶는 역할을 한다.
*args
>>> def print_args(*args):
print('tuple', args)
함수를 인자없이 호출하면 *args 에는 아무것도 없다.
>>> print_args()
tuple: ()
인자를 넣어서 튜플을 출력할때.
>>> print_args(3,2,1,'qwe','wer')
tuple : (3,2,1,'qwe','wer')
- 를 사용할때 가변인자의 이름으로 args 를 사용할 필요가 없지만 관용적으로 args 를 사용한다.
**kwargs
키워드 인자를 딕셔너리로 묶기 위해 두개의 (**) 를 사용할수있다. 인자의 이름은 키고 값은 이 키에 대응하는 딕셔너리 값이다.
다음 예제는 print_kwargs() 함수를 정의하여 키워드 인자를 출력한다.
>>> def print_kwargs(**kwargs):
print('kwargs:', kwargs)
키워드 인자를 넣어서 호출해본다.
>>> print_kwargs('wine'='merlot', 'entree'='mutton')
kwargs: {'wine':'merlot', 'entree':'mutton'}
함수안에 kwrags 딕셔너리가 있다.
위치 매개변수와 마찬가지로 *args, **kwargs를 섞어서 사용하려면 이들을 순서대로 배치해야한다.
그리고 kwargs 도 관용적으로 kwargs 를 사용한다.
출처 : [서적] Introducing Python