본문 바로가기
Algorithm/알고리즘 공부노트

파이썬 - packing/unpacking

by devraphy 2021. 12. 26.

1.  Packing

- packing은 여러개의 객체를 하나의 객체로 합쳐주는 기능이다. 
- packing에는 2가지가 존재한다.

a) 위치인자(*) packing

- print('a', 'b', 'c')

- print 함수는 매개변수의 갯수에 대한 제약이 없다. 이것이 가능한 이유가 packing이다. 

- 즉, 함수의 인자(=매개변수)의 갯수를 유연하게 지정할 때 사용한다.

- 위치인자(*)를 매개변수 앞에 붙이면 packing을 사용한다. 

- 위치인자를 사용하면 다수의 값들을 tuple로 관리한다. 

 

 

예시 - 위치인자) 

def test_packing(*args):
   print(type(args))
   print(args)
  
test_packing(1,2,3,4,5)


b) 키워드인자(**) packing 

- 키워드 인자는 **을 사용해 표시할 수 있다. 
- key와 value로 구성된 다수의 값을 dictionary로 관리한다. 

 

 

예시 - 키워드인자 

def kwpacking(**kwargs):
  print(type(kwargs))
  print(kwargs)
  
kwpacking(a=1, b=2, c=3)

2. Unpacking

- packing은 여러개의 객체를 하나의 객체로 합쳐주는 기능이다. 

- 반대로 unpacking은 여러개의 객체로 합쳐진 하나의 객체를 풀어내는 기능이다. 

- unpacking을 하기 위해서는 위치인자(*) 또는 키워드인자(**)를 붙여주면 된다. 

- Container 타입의 객체라면 unpacking이 가능하다. 

 

 

예시 - unpacking 

def sum(a, b, c):
  return a + b + c

numbers = [1,2,3]
print(sum(numbers)) # Error 발생 
# => numbers는 packing 되어있는 객체로, sum함수의 매개변수 갯수에 맞지 않다. 

print(sum(*numbers)) # unpacking을 통해 성공적으로 실행
# => 6 출력

sum(*numbers) # 6출력
sum(*[1,2,3]) # 6출력
sum(1,2,3) # 6출력

# => 위 세가지 명령어는 동일한 의미를 갖는다.

 


3. 참고자료

https://wikidocs.net/22801

 

3) packing, unpacking

`print`함수는 출력하고자하는 객체가 몇개던지, 즉 몇개의 인자를 받던지 상관하지 않고 출력해줍니다. ``` print(

wikidocs.net

 

댓글