반응형

 

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

+ Recent posts