패킹은 함수 정의할 때, "들어오는 인수를 모두 매개변수에 묶어주세요~"
언패킹은 함수 호출할 때, "해체하여 각각의 매개변수에 전달해주세요~"
print("가나다 abc 123")
print("가나다", "abc 123")
print("가나다", "abc", "123")
print 함수는 몇 개의 인자를 받던지 상관하지 않고 출력
print 함수처럼 사용자 지정함수도 인자의 개수를 유연하게 받을 수 있도록 하려면
packing을 지원받아야 함
인자로 받은 여러개의 값을 하나의 객체로 합쳐서 받을 수 있도록 관리하는 것
위치인자 패킹은 * 한개를 매개변수 앞에 붙임으로 사용함
위치인자는 tuple 자료형으로 하나의 객체가 되어 관리함
키워드 인자 패킹은 * 두개를 매개변수 앞에 붙임으로 사용함
키워드 인자는 패킹한 인자들을 키워드와 인자 쌍으로 이뤄진 딕셔너리로 관리함
여러개의 객체를 하나의 객체로 합쳐주는 패킹과 달리 여러개의 객체를 포함하고 있는 하나의 객체를 풀어준다.
함수에서 unpacking을 할때는 매개변수에 *을 붙이는게 아니라 인자 앞에 붙여서 사용함
동일하게 위치인자를 unpacking 하는 경우는 *를, 키워드인자를 unpacking하는 경우 **를 사용함
※ *를 붙이는 행위는 매개변수가 존재하는 경우에만 한함
위치인자를 unpacking한다고 해서 위치인자가 꼭 tuple 자료형일 필요는 없음
container 객체라면 모두 가능(문자열, 리스트, 튜플, 배열, 딕셔너리)
키워드 인자를 unpacking할 때는 딕셔너리가 필요함