Python

[21.05.03] *args 와 **kwargs

baecode 2022. 5. 3. 19:11
반응형

*args

 

arguments 의 약자로 인자 값을 전달 받는다는 의미

사용자가 원하는 만큼 인자를 전달할수있고 함수내부에서 여러 값을 튜플로 전달 된다

 

*args 라고 꼭 적을 필요없이 *name *food 로 원하는 이름을 적어도 된다 ( args가 통상적으로 쓰인다고 함)

 

 

-파이썬은 *args 가 어디서부터 어디까지가 *args 인지 모르기떼문에

 *args 는 일반변수보다 항상 뒤에 있어야하며 일반변수보다 앞에올 경우 에러가 난다

 

 

ex)

 

def myfunc(*args):
  print(args)
  print(sum(args))

myfunc(1,3,42,52)
'''
튜플로 전달받음
(1, 3, 42, 52)

98
'''



**kwargs 

 

keywardarguments의 약자로 키워드를 전달받는다는 의미

 

함수를 호출할때 키워드='값'의 형태로 함수를 호출할수있으며 함수에 딕셔너리 형태로 전달 된다

 

마찬가지로 **kwargs로 꼭 적을 필요는없지만 통상적으로 kwargs를 사용한다고한다

 

ex) 

def myfunc(**kwargs):
  print(kwargs)
  if 'name' in kwargs:
    name = kwargs['name']
    print(f'안녕하세요 저는 {name} 입니다.')
  else :
    print('이름을 찾을 수 없습니다')

myfunc(name='배성현')
'''
딕셔너리로 전달받음
{'name': '배성현'}

안녕하세요 저는 배성현 입니다.
'''

myfunc(food='사과')
'''
딕셔너리로 전달받음
{'food': '사과'}

이름을 찾을 수 없습니다
'''

 

반응형