04.가변 위치 인자(*args), 가변 키워드 인자(**kwargs), Packing, Unpacking
by SANGGI JEON
가변 인자
- 가변 위치인자(*args): 임의 개수의 위치 인자를 tuple 형태의 변수로 저장
- 가변 키워드인자(**kwargs): 임의 개수의 키워드인자를 dictionary 형태로 저장
# 가변 위치 인자(*args) 예제 1
def variable_length(a, b, *args):
print(a)
print(b)
print(args)
variable_length(1, 2, 3, 4, 5) # 3, 4, 5는 *args에 들어감
# 결과
1
2
(3, 4, 5)
# 가변 위치 인자(*args) 예제 2
def asterisk_test(a, *args):
print(a, args)
print(type(args))
asterisk_test(1, 2, 3, 4, 5, 6)
# 결과
1 (2, 3, 4, 5, 6)
<class 'tuple'>
# 가변 키워드 인자(**kwargs) 예제1
def key_variale_length(**kwargs):
print(kwargs) # unpacking
print("First value is {first}".format(**kwargs))
print(f"First value is {kwargs.get('first')}")
print("Second value is {second}".format(**kwargs))
print("Third value is {third}".format(**kwargs))
key_variale_length(first=3, second=4, third=5)
# 결과
{'first': 3, 'second': 4, 'third': 5}
First value is 3
First value is 3
Second value is 4
Third value is 5
# 가변 키워드 인자(**kwargs) 예제2
def asterisk_test2(a, **kwargs):
print(a, kwargs)
print(type(kwargs))
asterisk_test2(1, b=2, c=3, d=4, e=5, f=6)
# 결과
1 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
<class 'dict'>
# unpacking
def unpacking_test(a, args):
print(a, *args) # unpacking
print(type(args))
unpacking_test(1, (2, 3, 4, 5, 6))
def unpacking_test(a, *args):
print(a, args)
print(*args) #unpacking
print(type(args))
unpacking_test(1, 2, 3, 4, 5, 6)
# 결과
1 2 3 4 5 6
<class 'tuple'>
1 (2, 3, 4, 5, 6)
2 3 4 5 6
<class 'tuple'>
tom_score = [95, 85, 90]
jane_score = [90, 90, 100]
kate_score = [100, 100, 80]
students_scores = [tom_score, jane_score, kate_score]
tom_total = 0
jane_total = 0
kate_total = 0
for tom, jane, kate in zip(*students_scores):
tom_total += tom
jane_total += jane
kate_total += kate
print(tom_total / 3, jane_total / 3, kate_total / 3)
# 결과
# 90.0 93.33333333333333 93.33333333333333
Packing과 Unpacking
colors = ['red', 'blue', 'green'] # packing
a, b, c = colors # unpacking
print(a, b, c)
colors = ['red', 'blue', 'green'] # packing
a, _, c = colors # unpacking
print(a, c)
def unpacking_dict(a, b, c, d):
print(a, b, c, d)
data = {'b': 1, 'c': 2, 'd': 3}
unpacking_dict(10, **data)
Subscribe via RSS