Python/문법

파이썬 가변 인자 *, *

snowman95 2022. 9. 25. 15:58
728x90
반응형

가변 인자를 받을 때

  • * : positional arguments
    • 순서 기반으로 동작 합니다.
    • a,b,c = 함수(1,2,3) 이면 a=1, b=2, c=3
    • c,b,a = 함수(1,2,3) 이면 a=3, b=2, c=1

  • ** : keyword arguments
    • key 기반으로 동작 합니다.
    • a,b,c = 함수(c="3", b="2", a="1") 이면 a=1, b=2, c=3
    • a,b,c = 함수(a="1", b="2", c="3") 이면 a=1, b=2, c=3

둘이 함께 사용도 가능하지만, * 이 ** 보다 와야 합니다.

def test(*args, **kwargs): 
  print(args) 
  print(kwargs) 

test('1', '2', '3', fourth='4', fifth='5') 

# 결과
#('1', '2', '3') 
# {'fourth': '4', 'fifth': '5'}

 

* 응용 방법

nums = [1,2,3]
*a, b = nums

# a = [1,2] 순서를 다 채우고 나머지 요소들이 모두 *a로 들어감
# b = 3 순서적으로 자리만 차지함. 마지막 요소인 3이 마지막 위치인 b에 들어감

이렇게 안하고 평소에 알던대로 뽑으려면 뭐 이런식으로 ?

a, b = nums[:-1], nums[-1]

반응형