지난 세 개의 게시글에서 *args와 **kwargs, 그리고 이 둘을 사용해서 함수를 만드는 것까지 보았다.
지난 내용을 확인하려면 아래 링크로 들어가면 된다.
앞서 본 내용에서는 *args와 **kwargs를 함수 parameter(매개 변수)로 사용해서 길이가 정해지지 않은 인자를 받도록 함수를 설정했다. 하지만 첫 게시물 *args에서 언급했듯이, args의 원래 기능은 unpacking(풀어헤치기)라는 것!
그래서 함수 밖에서 이미 설정해 놓은 변수를 *이나 **을 사용해서 일일이 풀어쓸 필요 없이 변수 이름 그대로 함수에 활용할 수 있다.
예를 들어, parameter 3개의 값을 모두 더해주는 함수
def sum(num1, num2, num3):
print(num1 + num2 + num3)
가 있을 때, 함수를 사용하기 위해서는 변수 3개를 모두 입력해야 한다.
그래서 함수 밖에 있는 다음과 같은 dictionary의 값을 더하려면
numbers = {'num1':3, 'num2':6, 'num3':9}
다음과 같이 사전 안의 값을 각각 따로 넣어줘야하는 번거로움이 생긴다.
sum(numbers['num1'], numbers['num2'], numbers['num3']) #output: 18
하지만 **을 사용하면 다음과 같이 간단하게 입력이 가능하다.
sum(**numbers) #output: 18
주의할 점 단 한 가지는 필요한 매개 변수의 수와 argument안의 인자 수가 같아야 한다는 것!
built-in function에서도 또한 사용할 수 있다.
start_and_stop = [3, 6]
range_values = range(*start_and_stop)
print(list(range_values))
#output: [3, 4, 5]
연습문제
# Checkpoint 1
def calculate_price_per_person(total, tip, split):
total_tip = total * (tip/100)
split_price = (total + total_tip) / split
print(split_price)
code:
# Checkpoint 2
table_7_total = [534.50, 20.0, 5]
# Checkpoint 3
calculate_price_per_person(*table_7_total)
output:
128.28
'개발일기 > PYTHON [codecademy]' 카테고리의 다른 글
*args와 **kwargs (1) (Function Arguments) [Intermediate] (0) | 2022.08.14 |
---|---|
**kwargs (Function Arguments) (0) | 2022.08.14 |
*args (Function Arguments) (0) | 2022.08.14 |
Recap (Function Arguments) (0) | 2022.08.14 |
[codecademy] 파이선 초보 단계 끝! (0) | 2022.08.13 |
댓글