본문 바로가기
PROGRAMMING/PYTHON

[Python] packing과 unpacking

by 안녕나는현서 2021. 8. 16.
728x90

Packing

  • 함수가 받을 인자의 개수를 유연하게 지정하기 위해 사용!
  • 인자로 받은 여러 개의 값을 하나의 객체로 합쳐서 받을 수 있다.

 

- 가변 인자

  • 매개 변수 앞에 *
  • 튜플 형태로 처리
def func(*args):
	return args
    
print(func(1, 2))
  • 위의 코드를 실행하면 (1, 2)와 같이 튜플 형태로 출력된다.

 

- 가변 키워드 인자

  • 매개 변수 앞에 **
  • 딕셔너리 형태로 처리
def func(**kwargs):
	return kwargs
    
print(func(한국어='안녕', 영어='hi'))
  • 위의 코드를 실행하면 {'한국어' : '안녕', '영어' : 'hi'}와 같이 딕셔너리 형태로 출력된다.

 

Unpacking

  • 여러 개의 객체를 포함하고 있는 하나의 객체를 풀어주기 위해 사용!
  • 매개변수에 *을 붙이는 게 아닌, 인자 앞에 *을 붙인다.

 

- 가변 인자

def func(a, b, c):
	return a + b + c
    
numbers = [1, 2, 3]

print(func(*numbers))
  • 해체된 결과가 함수의 매개변수 개수와 다를 경우, 에러 발생

 

- 2차원 배열에서 결과를 출력할 때 유용하다!

arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in arr:
	print(*row)
  • 위와 같은 코드를 실행하면 한 줄마다 행의 모든 값이 출력된다
1 2 3
4 5 6
7 8 9
  • 모든 값을 한 줄에 출력하려면 end=' '를 쓰면 된다.
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in arr:
	print(*row, end=' ')
1 2 3 4 5 6 7 8 9

 

[참고]

https://wikidocs.net/22801

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

728x90

댓글