함수는 input parameter를 받아서 return값으로 output으로 리턴해준다.
그리고 함수는 호출할때 parameter를 함수에 건내주어서 호출한다.

parameter들을 순서대로 전달한다하지만 위 기본적인 Synatax 처럼 순서에 맞춰서 parameter를 전해주지 않고,순서상관없이 parameter 이름을 미리 맞추어 값을 전달할 수 있다.
이를 Keyword arguments 라고 한다

parameter이름을 맞춰 값을 지정하였기때문에 가독성이 높아진다는 장점이 있다.순서를 맞추어 parameter 값을 전해주는 positonal agruments 방식과 keyword arguments 방식을 혼용해서 사용할 수 있다.

keyword arguments 순서는 바뀌어도 상관없지만, positonal arguments 부분은 순서를 지켜야 한다.source code
def love_you(my_name, your_name):
print(f"{my_name} loves {your_name}")
love_you(your_name = "아이유", "정우성")
> Traceback (most recent call last):
File "python", line 1
SyntaxError: positional argument follows keyword argument
keyword argument가 positional argument 보다 더 앞으로 위치되어 함수가 호출되었기 때문에 SyntaxError함수의 parameter에 default value을 정의해 줄 수도 있는데, default value이 정의된 paramter는 함수가 호출될때 값을 넘겨주지 않아도 된다.
값이 넘겨지지 않는 경우 default value이 자동으로 넘겨진다.

default value이 정의된 parameter가 deafult value이 정의되지 않는 parameter보다 먼저 위치해 있으면 안된다.source code
def love_you(my_name = "정우성", your_name):
print(f"{my_name} loves {your_name}")
love_you("아이유")
> Traceback (most recent call last):
File "python", line 1
SyntaxError: non-default argument follows default argument
위 소스예제에서 Parameter에 Default value가 선언되어 있지않고 Position agruments로 값을 전달하고자 할때, 당연히 비어있는 "your_name"이라는 parameter로 arguments가 전달되는 것이 아니라 Python은 "아이유"라는 값을 "my_name", "your_name" 중 어떤 parameter로 전달해야할지 모르는 상황이 온다.
따라서 defalt 값이 정해지지 않은 parameter는 함수에서 먼저 위치해주어야한다.