C++ 에서 포인터에 고통받다 python을 쓰기 시작하면서 한동안 asterisk는 곱셈, 제곱승 등의 연산에서만 봤다
그러나 이런저런 코드를 보다보니 c++에서 많이 보던 형태로 사용되는 것을 보고 어떤 역할인지 궁금해서
찾아보고 나중을 위해 정리 해 둔다.
맨 아래에 내가 이해하기 위해 참고한, 보다 자세한 예제가 있는 원본 주소를 추가.
Python 에서 Asterisk 의 사용처
1. 곱셈, 제곱승
2. 리스트 확장
3. 가변인자
4. unpacking
1, 2 번은 자주 쓰고 다 아니까 넘어가고..
3. 가변인자
함수의 파라미터로 값을 넘길때 파라미터의 개수가 결정되지 않은 경우 가변인자의 형태로 사용가능
키워드 없이 위치로 결정되는 positional arguments는 * 로 (일반적으로는 *args)
키워드를 갖는 keyword arguments는 **로 사용한다. (일반적으로는 **kwargs)
두가지를 결합해서 사용 할 경우에는 일반 파라미터 규칙과 동일하게 * 를 **보다 앞서서 사용해야 한다.
이러한 형태로 전달하는 과정을 packing 이라 하고 각각 tuple과 dict에 저장된다.
def print_data(*args, **kwargs):
print(args)
print(kwargs)
print_data("data1", "data2", "data3", kwdata1="data4", kwdata2="data5")
# ("data1", "data2", "data3")
# {"kwdata1": "data4", "kwdata2": "data5"}
4. unpacking
이는 3번의 packing개념의 반대로 tuple 이나 dict 데이터를 각각의 데이터를 풀어내는 것이다.
def mult(a, b):
return a*b
mult(2, 2)
# 4
c = {"a": 2, "b": 2}
mult(c["a"], c["b"])
# 4
mult(c)
# error!!
mult(**c)
# 4
'Programming > Python' 카테고리의 다른 글
Python array에서 extended slices를 사용하자 (0) | 2020.05.18 |
---|---|
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자 (1) | 2020.05.12 |
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자. (0) | 2020.01.07 |
python-virtualenv를 이용해 가상환경을 설정하자 (0) | 2020.01.02 |
설정 값 저장을 위해 ConfigParser를 이용 해 보자. (0) | 2019.12.02 |