Python에서 *(Asterisk)가 어떻게 사용되는지 알아봅니다.
- 곱셈, 거듭제곱
Pass
- 리스트 확장
list_1 = [0]*5 # [0, 0, 0, 0, 0]
tuple_1 = (0,)*5 # (0, 0, 0, 0, 0)
- 가변인자
가변인자 : 길이가 변할 수 있는 인자(argument),
함수에 입력이 얼마나 들어오게 될지 모르는 경우에 사용
*args
: args라는 tuple로 저장됨
**kwargs
: kwargs라는 dict에 저장됨
def args_func(*args):
print(args)
def kwargs_func(**kwargs):
print(kwargs)
args_func(1, 2) # (1, 2)
kwargs_func(a = 1, b = 2) # {'a':100, 'b':200}
- 언패킹(Unpacking)
container 타입의 데이터를 unpacking하는 경우에 사용됨.
(**
로 딕셔너리형태에서도 활용가능함.)
from functools import reduce
primes = [2, 3, 5, 7, 11, 13]
def product(*numbers):
p = reduce(lambda x, y: x * y, numbers)
return p
product(*primes)
# 30030
product(primes)
# [2, 3, 5, 7, 11, 13]