argument가 두개 이상인 경우 위치인자는 반드시 키워드인자 앞에 와야한다.
이 에러는 키워드인자인 name = '원숭이'가 위치인자인 '저녁'의 앞에 위치하여 생긴 에러이다. 그러므로 인자가 두개일 때, '원숭이' , time = '저녁' 의 순서는 가능하다.
argument의 개수에 따른 차이점이 있을까 궁금하여 두개, 세개, 다섯개인 경우를 실행에 보았고 개수에 상관없이 위치인자가 키워드인자의 뒤에 위치하면 에러가 발생하는 것을 알 수 있었다.
def return_name_greeting(name, time):
return f'{name}님, 좋은{time}입니다. :) Merry Christmas!'
print(return_name_greeting(name = '원숭이', '저녁'))
#이렇게 키워드인자 뒤에 위치인자를 넣으면 아래 사진과 같이 에러가 뜬다.


함수 문제를 풀다 알게 된 나만 몰랐던 random.choice 이야기ㅎㅎ;
문제를 풀다가 도저히 머리가 안굴러가 대신 random.choice 를 굴려보고 있었는데 리스트나 튜플, 문자열에서 모두 작동한다는 사실을 발견(?)했다.
import random
#1
animal = ["monkey", "shark", "dog", "cat", "lion"]
#2
animal = ("monkey", "shark", "dog", "cat", "lion")
#3
animal = "monkey", "shark", "dog", "cat", "lion"
print(random.choice(animal))
python doc를 찾아보니 아래와 같이 설명되어 있다.
누군가에겐 그저 기초이고 당연한게 나에겐 그저 새롭다...😇⭐️
random.choice 는 비어 있지 않은 시퀀스 seq에서 임의의 요소를 반환합니다. seq가 비어 있으면, IndexError를 발생시킵니다.

기본급과 보너스를 더한 후 10%의 세금을 떼고 받는 실수령액과 세금을 출력하는 문제였는데, 지문이 길어지고 변수가 늘어나니 머릿속은 물음표로 가득해진다. 코드를 해석할 줄 모르기 때문이란 생각이 들어 리뷰를 한 뒤 아주 살짝 수정해 보았다.
# base_salary, bonus를 매개변수로 갖는 함수 calculate_salary 선언
def calculate_salary(base_salary, bonus):
# base_salary와 bonus를 더해 세전월급 total_salary에 저장
total_salary = base_salary + bonus
# 세전월급*0.1를 하여 텍스값 tax에 저장
tax = total_salary * 0.1
# 세전월급에서 텍스를 제외한 실수령액을 net_salary에 저장
net_salary = total_salary - tax
# 실수령액, 세금 반환
return net_salary, tax
# 첫줄에 선언한 함수 calculate_salary(5000000000, 100000000)를 호출하여 실수령액, 세금을 반환
result_net_salary, result_tax = calculate_salary(5000000000, 100000000)
# 함수 구문에 return만 있으므로 print를 사용해 출력
print(f'세전 월급: {result_net_salary + result_tax}, 세금: {result_tax}원, 실수령액: {result_net_salary}원')
# 수정본(출력문에서 연산을 없애기 위해 세전월급을 result_total_salary를 통해 호출하였음)
def calculate_salary(base_salary, bonus):
total_salary = base_salary + bonus
tax = total_salary * 0.1
net_salary = total_salary - tax
return total_salary, net_salary, tax # 세전월급 추가 반환
result_total_salary, result_net_salary, result_tax = calculate_salary(5000000000, 100000000)
print(f'세전 월급: {result_total_salary}원, 세금: {result_tax}원, 실수령액: {result_net_salary}원')
지난 며칠간 포스팅에서 언급한 것들이 기록으로 남기기엔 살짝 부끄러울 정도로 사소한 것들이지만 나와 비슷한 문제로 허덕이는 사람이 있을 것 같아 그때 그때 생기는 궁금증을 최대한 적으려고 노력중이다. 이렇게 계속 글을 남겨 누군가에겐 도움이 되고 나에겐 그땐 그랬지 하는 추억을 안겨주길 바라며!
[24.12.23]