함수는 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
는 함수에서 먼저 위치해주어야한다.