Asterisk 강의 집중 안 돼서 한 세 번 다시 본 듯... **** 별표를 공부하고 정리해보겠습니다.
*
는 크게 4가지 용도로 사용됩니다.
*
**
*agrs
**kargs
1, 2는 다 아실 거라 생각하고 3, 4를 다루고 넘어가겠습니다!
def asterisk_test(a, *args):
print(a, args)
print(type(args))
asterisk_test(1,2,3,4,5,6)
Out:
1 (2, 3, 4, 5, 6)
<class 'tuple'>
asterisk_test
라는 함수를 만들어주었는데, a에는 처음 값을 a
에 넣고 나머지는 한꺼번에 받으라는 의미라고 합니다.
그래서 1 과 (2,3,4,5,6)이 나왔습니다.
임의의 개수의 인자를 받는 함수를 가리켜 가변 인자를 사용한다고 표현합니다.
강의에서는 여러 개의 변수를 한 꺼번에 받는 경우를 의미한다고 설명하였습니다.
**kargs
는 키워드 인자, 키워드 가변 인자라고 합니다.
def asterisk_test(a, **kargs):
print(a, kargs)
print(type(kargs))
asterisk_test(1,b=2,c=3,d=4,e=5,f=6)
Out:
1 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
<class 'dict'>
함수는 임의의 개수의 키워드 인자를 받습니다.
출력값을 확인해보면 추가적인 키워드를 딕셔너리로 전달하는 것을 볼 수 있습니다.
1은 a
로 들어가고 나머지 b=2,c=3,d=4,e=5,f=6
는 **kargs
라는 변수에 dict type으로 들어가게 됩니다.
key, value를 지정해주는 것과 같은 형식인가 봅니다.
tuple, dict 등의 자료형에 들어가 있는 값을 unpacking 해줍니다.
함수의 입력값, zip 등에 유용하게 쓰입니다.
예시 코드를 살펴보겠습니다.
def asterisk_test(a, *args):
print(a, args)
print(type(args))
asterisk_test(1, *(2,3,4,5,6))
Out:
1 (2, 3, 4, 5, 6)
<class 'tuple'>
def asterisk_test(a, *args):
print(a, *args)
print(type(args))
asterisk_test(1, (2,3,4,5,6))
Out:
1 (2, 3, 4, 5, 6)
<class 'tuple'>
위의 두 코드는 같은 결괏값을 만드는 다른 방식이다!
unpacking의 예시를 더 살펴봐야 할 것 같다...
a, b, c = ([1,2], [3,4], [5,6])
print(a,b,c)
Out:
[1, 2][3, 4] [5, 6]
a, b, c의 변수에 list를 하나씩 unpacking 해주는 예시
data = ([1,2], [3,4], [5,6])
print(*data)
Out:
[1, 2][3, 4] [5, 6]
결괏값은 동일하다.
data의 변수에 list를 다 담아준 다음에 가변인자 *
를 사용하여 unpacking한 예시
def asterisk_data(a,b,c,d):
print(a,b,c,d)
data = {'b':1, 'c':2, 'd':3}
asterisk_data(10, **data)
Out:
10 1 2 3
10이 1로 들어가고 dict type의 data가 b, c, d의 변수에 각각 할당되며 unpacking 된다.
여기까지 asterisk(*)
를 활용한 다양한 방법에 대해 알아보았다.
곱셈과 거듭 제곱에도 활용되지만
가변 인자로서의 활용도를 살펴볼 수 있는 시간이었다.
무료 강의입니다! 강추!