Parameter로 input받아서 return값을 output으로 리턴.
순서에 맞춰서 Parameter 값을 전달
def love_you(my_name, your_name):
print(f"{my_name} loves {your_name}")
love_you("정우성", "아이유")
#"정우성 loves 아이유"
if love_you("아이유", "정우성)
으로 순서를 바꾸어 입력한다면,
def love_you(my_name, your_name):
print(f"{my_name} loves {your_name}")
love_you("아이유", "정우성")
#"아이유 loves 정우성"
앞에 쓰여진 keyword 단어처럼 이름을 지정하여 parameter 값을 전달
def love_you(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love_you(your_name="아이유",my_name="정우성")
# "정우성 loves 아이유"
순서와 다르게 함수를 호출하려는 인자에 your_name="아이유"
와 my_name="정우성"
으로 KEYWORD 지정하였더니, 순서를 바꾸어도 호출이 제대로됨
Keyword arguments를 사용하면,
🎯 코드의 가독성이 높아진다.
🎯 순서가 엉켜서 에러가 발생할 확률이 적어진다.
def love_you(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love_you("정우성", your_name = "아이유")
# "정우성 loves 아이유"
if love_you(your_name="아이유","정우성")
으로 순서를 바꾸어 입력한다면,
def love_you(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love_you(your_name="아이유","정우성")
# SyntaxError: positional argument follows keyword argument
위와 같이 에러가 발생한다.
순서를 꼭 지켜야하는 positional argument를 순서에 맞춰준 후에 keyword argument를 사용해야함
defult값을 정의하면 함수 호출할 때 인자에 값이 없어도 출력할 수 있다. 값이 넘겨지지 않은 경우에는 default로 지정해준 값이 자동으로 전해진다.
def love_you(my_name, your_name="신민아") :
print(f"{my_name} loves {your_name}")
love_you("정우성")
# 정우성 loves 아이유
하지만, parameter에서 default value를 정해줄 때도 순서가 매우 중요!
만약 아래처럼 default 값이 정의된 parameter
가 default 값이 정의되지 않은 parameter
보다 먼저(앞에) 위치하면,
def love_you(my_name = "정우성", your_name):
print(f"{my_name} loves {your_name}")
#> Traceback (most recent call last):
# File "python", line 1
#SyntaxError: non-default argument follows default argument
에러 발생