반응형
Asterisk
우리가 흔히 알고 있는 * 을 의미한다.
단순 곱셈, 제곱 연산, 가변 인자 활용 등 다양하게 사용된다.
가변 인자 활용 => 변수 여러 개를 packing하여 한번에 넘겨줄 때
def astarick_test(a, *args):
print(a, args)
print(type(args))
astarick_test(1,2,3,4,5,6)
def astarick_test(a, *args):
print(a, args)
print(type(args))
astarick_test(1,*(2,3,4,5,6))
1 (2, 3, 4, 5, 6)
<class 'tuple'>
*(2,3,4,5,6) = 2,3,4,5,6 이기 때문이다.
키, 밸류 값을 한번에 넘겨줄 때 => ** 을 쓴다.
def astarick_test(a, **karg):
print(a, karg)
print(type(karg))
astarick_test(1, b=2, c=3, d=4, e=5)
1 {'b': 2, 'c': 3, 'd': 4, 'e': 5}
<class 'dict'>
변수 여러 개를 unpacking할 때
def astarick_test(a, args):
print(a, *args) # unpacking
print(type(args))
astarick_test(1,(2,3,4,5,6))
1 2 3 4 5 6
<class 'tuple'>
이미 packing 되어있는 튜플에 asterisk를 하면 )
def asterisk_test(a, *args):
print(a, args[0])
print(type(args))
asterisk_test(1, (2, 3, 4, 5, 6))
1 (2, 3, 4, 5, 6)
<class 'tuple'>
args = ((2, 3, 4, 5, 6),) 가 된다. 따라서 args의 첫 번째 인덱스만 꺼내 주어야 한다.
일반적인 unpacking
a, b, c = ([1,2],[3,4],[5,6])
print(a,b,c)
data = ([1,2],[3,4],[5,6]) #unpacking
print(*data)
[1, 2] [3, 4] [5, 6]
[1, 2] [3, 4] [5, 6]
def asterick_test(a,b,c,d):
print(a,b,c,d)
data = {"b":1,"c":2,"d":3}
asterick_test(10, **data)
10 1 2 3
for data in zip(*([1,2],[3,4],[5,6])):
print(sum(data))
9
12
반응형
'AI > python' 카테고리의 다른 글
Pythonic Code - Set() (0) | 2021.01.15 |
---|---|
Pythonic Code - Deque, Ordered Dict, Counter (0) | 2021.01.12 |
Pythonic Code - Lambda & MapReduce (0) | 2021.01.11 |
Pythonic Code - Enumerate, Zip (0) | 2021.01.10 |
Pythonic Code - List Comprehension (0) | 2021.01.10 |