def add_func(a, b): # a, b : parameters
return a + b
print(add_func(3,7)) # 3, 7 : arguments
def add_func(a, b):
return a + b
res = add_func(a = 3, b = 7)
res = add_func(b = 5, a = 4)
def func(a, b, is_add = True, msg = "hi"):
print(msg)
return a + b if is_add else a - b
a, b = 3, 5
res = func(a, b)
res = func(a, b, False)
res = func(a, b, False, "hello")
res = func(a, b, msg = "hello")
res = func(a, msg = "hello", b) # 에러 발생
def avg(num, *args):
return sum(args)/num
res = avg(5,1,2,3,4,5) # 1,2,3,4,5 의 평균
def personal_info(**kwargs):
print(kwargs)
personal_info(name = "tom", age = 25, gender = "male", alive = True)
주의! *args와 같은 인자를 여러개 받기 위한 매개변수는 일반 매개변수보다 뒤에 위치해야 한다.
그렇지 않으면, *args가 일반 매개변수까지 다 먹어버린다.
def grade(name, retake=False, *args): # 초기값 설정 매개변수 먼저
res = f"{name} : {sum(args)/len(args)}"
res = res + "(Retake)" if retake else res
print(res)
grade("tom", True, 1, 2, 3, 4, 5) # 의도한대로 동작
grade("tom", 1, 2, 3, 4, 5) # retake에 1이 들어가버림
def grade(name, *args, retake=False): # 여러개 받기 매개변수 먼저
res = f"{name} : {sum(args)/len(args)}"
res = res + "(Retake)" if retake else res
print(res)
grade("tom", 1, 2, 3, 4, 5) # 의도한대로 동작
grade("tom", 1, 2, 3, 4, 5, True) # args에 True까지 들어가버림
grade("tom", 1, 2, 3, 4, 5, retake = True) # 의도한대로 동작