본문 바로가기
개발일지/Django

Django - 다인수 vs 다인수 (many to many, 다대다) 해결방법

by 개발에정착하고싶다 2023. 1. 10.

#1 개요

이건 신기한 구조적 접근이다.

 

a = (1,2,3)

b = [1,2,3]

 

이라고 할때

사실상 a 와 b는 각각 인자를 3개씩 품고 있다.

 

그리고 만약에 a에 b를 대응하려고

a(b)라고 하게 되면

TypeError: missing required positional arguments

라는게 뜨게 된다.

파이썬은 기본적으로 one to one으로 대응되게 설계되어있는게 기본값이기 때문이다.

 

하지만 a와 b처럼 다대다의 경우는

a(*b)

라고 해주게 될 경우 대응되게 된다.

*을 한개 붙여주는 것을 unpack이라고 부르는데

이름을 보아하니, 몇개가 되었든 2개 이상의 인자들을 한 보따리로 뭉뚱그려서 일단은 인자에 넣어주고,

그 넣어준 다음에 한개씩 풀어주며 대응한다는 느낌같다.


#2 실제 코드적 접근

def myfn(a, b, c):
	print(f'a = {a}, b = {b}, c = {c}')
abc = [1, 2, 3]
myfn(*abc)