less than 1 minute read

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

Categories:

Updated: