pack_tuple = 1, 2, 3
print(pack_tuple)
>>> (1, 2, 3)
pack_list = [1, 2, 3]
print(pack_list)
>>> [1, 2, 3]
a, b, c = pack_tuple
print(a); print(b); print(c)
>>>
1
2
3
a, b, c = pack_list
print(a); print(b); print(c)
>>>
1
2
3
pack_str = 'ABC'
a, b, c = pack_str
print(a); print(b); print(c)
>>>
A
B
C
pack_dic = {'Key1': 'Value1',
'Key2': 'Value2',
'Key3': 'Value3'}
2.4.1. key 값만 출력
a, b, c = pack_dic
print(a); print(b); print(c)
>>>
Key1
Key2
Key3
2.4.2. value 값만 출력
a, b, c = pack_dic.values()
print(a); print(b); print(c)
>>>
Value1
Value2
Value3
2.4.3. key, value 같이 출력
a, b, c = pack_dic.items()
print(a); print(b); print(c)
>>>
('Key1', 'Value1')
('Key2', 'Value2')
('Key3', 'Value3')
언더바(_)를 활용해 불필요한 변수는 생략 가능(관례)
a, _, c = pack_list
print(a); print(c)
>>>
1
3
3.1.1. 가변인자(Variable arguments)
3.1.2. 위치인자(Positional arguments)
3.1.3. 키워드인자(Keyword arguments)
*args, **kwargs는 위치/키워드인자의 수가 많거나 함수에 넣어줄 인자의 수가 불명확한 경우(가변적인 경우) 활용
def args_test(*args):
print('받아온 형태: ', args); print()
for arg in args:
print(arg)
args_test(1,2,3)
>>>
받아온 형태: (1, 2, 3)
1
2
3
함수에 tuple 형태의 인자를 직접 넣는 경우
a = (1,2,3)
args_test(*a)
>>>
받아온 형태: (1, 2, 3)
1
2
3
# 함수 실행 시 인자로 a(tuple 형태) 앞에 * 을 붙여주면,
# 함수에 들어가는 인자 a가 (1,2,3)가 아닌 1,2,3 로 변환
참고)
a = (1,2,3)
args_test(a)
>>>
받아온 형태: ((1, 2, 3),)
(1, 2, 3)
def kwargs_test(**kwargs):
print('받아온 형태: ', kwargs); print()
for key, value in kwargs.items():
print(key, value)
kwargs_test(A=1, B=2, C=3)
>>>
받아온 형태: {'A': 1, 'B': 2, 'C': 3}
A 1
B 2
C 3
함수에 dictionary 형태의 인자를 직접 넣는 경우
a = {'A': 1, 'B': 2, 'C': 3}
kwargs_test(**a)
>>>
받아온 형태: {'A': 1, 'B': 2, 'C': 3}
A 1
B 2
C 3
# 함수 실행 시 인자로 a(dictionary 형태) 앞에 ** 을 붙여주면,
# 함수에 들어가는 인자 a가 {'A': 1, 'B': 2, 'C': 3}가 아닌 A=1, B=2, C=3 로 변환
참고)
a = {'A': 1, 'B': 2, 'C': 3}
kwargs_test(a)
>>> TypeError: kwargs_test() takes 0 positional arguments but 1 was given
주의: 반드시 위치인자(*args)가 키워드인자(**kwargs) 보다 먼저 위치해야 함
def mix_test(a, b, *args, c='6', d='7', **kwargs):
print(f"1. General args: {a}, {b}")
print(f"2. Positional args: {args}")
print(f"3. Default Keyword args: {c}, {d}")
print(f"4. Keyword args: {kwargs}")
mix_test(1, 2, 3, 4, 5, x=8, y=9, z=10)
>>>
1. General args: 1, 2
2. Positional args: (3, 4, 5)
3. Default Keyword args: 6, 7
4. Keyword args: {'x': 8, 'y': 9, 'z': 10}
(참고) 각각의 dictionary 데이터(audio_metadata, db_meta)를 분해해, 새로운 dictionary(meta_data)에 합하여 저장
dic1 = {'A': 1,
'B': 2,
'C': 3}
dic2 = {'D': 4,
'E': 5}
merge_dic = {**dic1, **dic2}
print(merge_dic)
>>>
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
활용 방법: