*args 입력값이 몇 개가 될지 모를때 - python

이찬·2023년 6월 10일
0

Python

목록 보기
4/17
post-thumbnail

*args

  • *a라고 써도 됨 아무 단어나!!
  • 이 지시어는 여러 개(복수)의 인자를 함수로 받고자 할 때 사용
  • 여러 개의 인자로 함수를 호출할 경우, 함수 내부에서는 튜플로 받은 것처럼 인식

==> 이처럼 여러 개의 인자를 받기 위해서 args 형태로 파라미터를 작성
args 앞에 붙는
*이 여러 개의 인자를 묶어서 하나의 튜플로 묶어주고 이를 args 에 할당

ex)

def sum_n_ints(*args):
return sum(args)

**kwargs

**kwargs : keyword arguments

  • 알 수 없는 숫자만큼의 키워드 아규먼트들을 받고 싶을 때 여러 개의 키워드 아규먼트들을 묶어서 딕셔너리로 만들어주는 ** 이 필요함
  • ** 는 그대로 딕셔너리 형태로 {'키워드' : '특정 값'} 요렇게 함수 내부로 전달됨

*args 와 **kwargs 를 같이 사용하는 경우

  • *args 는 연속되는 포지셔널 아규먼트를 다 먹는다.
  • **kwargs 는 연속되는 키워드 아규먼트를 다 먹는다.
  • *args 와 kwargs 순서를 맞춰서(kwargs 를 먼저 쓰면 안된다!) 쓰면 키워드 아규먼트가 나오기 전까지는 args 가 튜플로 먹고, 뒤 이어오는 키워드 아규먼트는 kwargs 가 딕셔너리로 먹는다.

args는 일반 변수보다는 뒤에 위치해 있어야함, 파이썬은 어디서부터 어디까지를 변수에 담을지 알 수 없음. 그래서 맨 앞에 특정 변수를 명시해두고, 그 뒤에는 *args로 argument를 넣어주어야함.

디폴트 값을 가지는 keyword argument 를 넣어주기

*args는 이어지는 포지셔널 아규먼트만 먹기에 a=1 전에서 끊길 것이고, ** kwargs 는 b=2 뒤로 이어지는 키워드 아규먼트들을 먹을 것이니 문제 없다

** 활용 - 특정 키워드에 반응

ex)

*args

def add(*args):
result = 0
for i in args:
result += i
print(result)

**kwargs

def name_and_age(**kwargs):
print(kwargs)

name_and_age(name="홍길동", age="50")
#출력값
{'age': '50', 'name': '홍길동'}

profile
Kyunghee univ. IE 21

0개의 댓글