default value parameter는 함수가 호출될때 Parameter에 인자를 받아 넘겨준다.
non-default value parameter는 함수가 호출될때 Parameter에 인자를 받아 넘겨줄 수 도 있으며, 인자를 넘겨주지 않아도 keywordname = value 형식으로 선언되어 있기 때문에 value 를 넘겨줄 수 있다.
함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안된다고 배웠습니다.
왜 안돼야만 하는지 생각해보시고 블로깅 하여 채널에 공유해 주세요.

제가 생각하기에는 Keyword Arguments의 특성때문에 default value parameter와 non-default value parameter의 자리가 바뀌면 안됀다고 생각합니다.
만약 default value parameter와 non-default value parameter를 Keyword Arguments방식처럼 parameter의 값을 주는 순서가 섞어서 코드를 작성을 한다고 하면
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
위와 같이 나오게 되는데 그 이유는 love_you("아이유")가 paremeter값이 지정되어있지않아 비어있는 상태인 your_name으로 알아서 찾아가는것이 아니라 my_name = "정우성"의 값을 my_name = "아이유" 로 최신화 한 것인지 your_name의 parameter값에 지정한 것인지 알 수 없어서 처음에 my_name = "정우성" 으로 지정한 값이 default값으로 내려오지 못해 error가 발생한다고 생각합니다.
위치 인수는 함수로 전달하는 매개 인자를 순서대로 나열하는 것이다.
가변 인수는 함수를 호출할 때 전달하는 argument의 갯수가 다양하게 변하는 것이다.
또한 가변 인수는 이후에 나열되는 인자는 반드시 키워드 인자로 전달 받도록 강제한다.
*args는 튜플의 형태로 전달된다.**kwargs는 딕셔너리의 형태로 전달 된다.
위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과를 블로그에 정리해 주세요.

수정을 하지 않은상태에서 먼저 런을 돌려 오류를 확인해 보면
func_param_with_var_args() missing 1 required keyword-only argument: 'age'
라고 나오게 된다. 그 이유는 *args 때문이다.
age는 가변인수가 아니지만 *args는 가변인수 이다.
위에서 설명했듯이 가변 인수의 특징은 가변 인수 이후에 나열되는 인자는 반드시 키워드 인자로 전달이 되게 된다. 따라서 age에 가야할 인자들이 *args에 들어가게 되어 버리기 때문에 위와 같은 오류가 발생하게 되는 것이다. 튜플형식의 가변 인수의 경우에는 keyword argument형식을 사용하면 된다.

혹시나하고 Assignment 3처럼 argument의 자리를 바꿔보았더니

이렇게 되어 버렸다. Positional Arguments의 영향을 받아서 이런 결과가 나오게 된 것 같다.
위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과를 블로그에 정리해 주세요

수정을 하지 않은상태에서 먼저 런을 돌려 오류를 확인해 보면 위와 같이 나오게 된다.
address = 0 이 부분이 invalid syntax 라고 나오게 된다. 그 이유는 **kwargs 때문이다.
address는 가변인수가 아니지만 **kwargs는 가변인수 이다.
위에서 설명했듯이 가변 인수의 특징은 가변 인수 이후에 나열되는 인자는 반드시 키워드 인자로 전달이 되게 된다. 따라서 address에 가야할 인자들이 **kwargs에 들어가게 되어 버리기 때문에 위와 같은 오류가 발생하게 되는 것이다.

따라서 딕셔너리 형식의 가변 인수의 경우에는 parameter의 순서를 바꿔주게되면 문제가 발생하지 않게 된다.
위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 다음 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과를 블로그에 정리해 주세요.

- positional(non-default) arguments
- default arguments
- variable length positional arguments (
*arg)- keyword-only arguments
- variable length keyword arguments (
**kwargs)

처음에 런을 돌려보면 전체적으로 문제가 많아 보인다.
하지만 참고자료에 나온 링크를 타고 들어가서 보면 parameter들의 순서에 문제가 있어서 에러가 생겼다는것을 알게 된다.
우선 딕셔너리 형태인 **kwargs는 parameter의 맨 뒤로 보낸다. 그리고 위치인자인 age를 맨 앞으로 가져온 뒤 다시 런을 돌리게 되면

다음과 같은 결과가 나오게 된다.