๐ Asterisk
- ํํ ์๊ณ ์๋ *๋ฅผ ๋งํจ
- ๊ณฑ์
๋ฐ ๊ฑฐ๋ญ์ ๊ณฑ ์ฐ์ฐ์ผ๋ก ์ฌ์ฉํ ๋
- ๋ฆฌ์คํธํ ์ปจํ
์ด๋ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต ํ์ฅํ๊ณ ์ ํ ๋
- ๊ฐ๋ณ์ธ์ (Variadic Arguments)๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ ๋
- ์ปจํ
์ด๋ ํ์
์ ๋ฐ์ดํฐ๋ฅผ Unpacking ํ ๋
# *args (= Asterisk arguments)
# args ๊ฐ๋ณ์ธ์๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ช
์๋ params์ ์ ์ธํ๊ณ packing๋์ด tuple๋ก ๋ฐํ
def aa(a, *args):
print(a, args)
print(type(args))
aa(1,2,3,4,5,6)
# 1 (2,3,4,5,6)
# <class 'tuple'>
# **kargs (= Double Asterisk Keywords arguments)
# kargs ๊ฐ๋ณ์ธ์๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ช
์๋ params๋ฅผ ์ ์ธํ๊ณ ๋ ํค์๋์ ํจ๊ป ํธ์ถํด์ผํจ.
# ํค์๋์ ํจ๊ป ํธ์ถํ์ง ์์๊ฒฝ์ฐ Type Error๊ฐ ๋ฐ์ํจ
# ๋ช
์๋ params๋ฅผ ์ ์ธํ๊ณ packing๋์ด dict๋ก ๋ฐ
def bb(a, **kargs):
print(a, kargs)
print(type(kargs))
bb(1, b=2, c=3, d=4, e=5, f=6)
#1 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
#<class 'dict'>
def aa(a, *args): # aa(1, *(2,3,4,5,6))
print(a, args[0]) # *args์ *(2,3,4,5,6)์ unpackingํ์ฌ ์ ๋ฌ
print(type(args))
aa(1, *(2,3,4,5,6))
# 1 2
# <class 'tuple'>
numbers = [1, 2, 3, 4, 5, 6]
# unpacking์ ์ข๋ณ์ ๋ฆฌ์คํธ ๋๋ ํํ์ ํํ๋ฅผ ๊ฐ์ ธ์ผํ๋ฏ๋ก
# ๋จ์ผ unpacking์ ๊ฒฝ์ฐ *a๊ฐ ์๋ *a,๋ฅผ ์ฌ์ฉ
*a, = numbers
# a = [1, 2, 3, 4, 5, 6]
*a, b = numbers
# a = [1, 2, 3, 4, 5]
# b = 6
a, *b, = numbers
# a = 1
# b = [2, 3, 4, 5, 6]
a, *b, c = numbers
# a = 1
# b = [2, 3, 4, 5]
# c = 6
def ast(a,b,c,d):
print(a,b,c,d)
data = {"b":1, "c":2, "d":3}
ast(10, **data)
# 10 1 2 3
for data in zip(*([1,2], [3,4], [5,6])):
print(data)
# (1, 3, 5)
# (2, 4, 6)