함수, 메서드를 작성할 때 대부분의 경우 매개변수의 개수를 명확히 지정해준다.
하지만 때로는 내가 작성한 함수의 인자로 몇 개가 입력될지 모를 때가 있다.
그럴 때는 매개변수에 *를 붙이면 여러 개의 입력값(인자)을 하나의 튜플로 받을 수 있다.
이러한 함수를 가변인자함수라고한다.
def print_animal(*args):
for name in args: #for문을 이용해 튜플의 모든 내용 출력
print(name,end=' ');
print();
print_animal('dog','cat','lion'); #튜플('dog','cat','lion')를 인자로 전달
print_animal('tiger','cat'); #튜플('tiger','cat')를 인자로 전달
>>dog cat lion
>>tiger cat
(*매개변수)를 마지막에만 작성해주면 그 앞에 다른 매개변수를 포함해도 함수는 정상적으로 작동된다.
def print_animal(num,*args):
print(num,end=' ');
for name in args:
print(name,end=' ');
print();
print_animal(3,'dog','cat','lion');
print_animal(2,'tiger','cat');
>>3 dog cat lion
>>2 tiger cat
위의 예제에서는 함수의 인자를 위치 인자(Positional arguments)로 전달했지만 아래와 같이 키워드 인자(keyword arguments)를 전달받는 가변인자함수도 생성이 가능하다.
def print_animal(**kwargs): # 매개변수의 이름앞에(**)를 붙여준다.
print(kwargs) #딕셔너리 형태로 전달받는다.
for x in kwargs:
print(kwargs[x])
print_animal(a='cat',b='dog',c='lion')
>>{'a': 'cat', 'b': 'dog', 'c': 'lion'} #딕셔너리 형태로 전달받는다.
>>cat
>>dog
>>lion
위의 두 예시를 함께 사용할 수도 있다.
단, 위치 인자가 키워드 인자보다 항상 앞에 위치해야 된다.
def print_animal(*args,**kwargs):
print(args)
print(kwargs)
print_animal('tiger','rabbit',a='cat',b='dog',c='lion')
>>('tiger', 'rabbit')
>>{'a': 'cat', 'b': 'dog', 'c': 'lion'}
'Python' 카테고리의 다른 글
Python - mutable객체, immutable객체 (0) | 2020.08.22 |
---|---|
Python - 빠른 입력 (0) | 2020.08.17 |
Python - 예외처리 (0) | 2020.08.10 |
Python - 클래스(Class)와 객체(Object) (0) | 2020.08.09 |
Python - 컬렉션 정리 (0) | 2020.08.04 |