아래의 예시와 같이 parameter로 입력한 name과 age가 순차적으로 들어감
def about_me(name,age):
print(f"Hello, I am {name}. I am {age} years old")
about_me("Jina",13) # Hello, I am Jina. I am 13 years old
about_me(13,"Jina") # Hello, I am 13. I am Jina years old
parameter가 순차적으로 들어가는 것이 아니라 이름으로 맞춰서 들어가게 됨
이를 이용하면 parameter의 순서가 바뀌어도 결과가 변하지 않음
예시)
def about_me(name,age):
print(f"Hello, I am {name}. I am {age} years old")
about_me(age=13,name="Jina") # Hello, I am Jina. I am 13 years old
position arguments와 keyword arguments를 혼합하여 사용할 수 있음
※ 주의 : keyword arguments는 순서가 바뀌어도 상관 없으나, position arguments 부분은 순서를 지켜야 함
예시) position arguments 부분의 순서를 지킨 경우
def about_me(name,age):
print(f"Hello, I am {name}. I am {age} years old")
about_me("Jina",age=13) # Hello, I am Jina. I am 13
예시) position arguments 부분의 순서를 지키지 않은 경우
def about_me(name,age):
print(f"Hello, I am {name}. I am {age} years old")
about_me(age=13,"Jina")
# SyntaxError: positional argument follows keyword argument
about_me(13,name="Jina")
# TypeError: about_me() got multiple values for argument 'name'
함수의 parameter에 default값 정의 가능
Default값이 정의 된 경우 input받은 값이 없으면 --> default 값으로 출력
예시 1)
def about_me(name,lang):
print(f"Hello, I am {name}. I am studying {lang}.")
about_me("Jina")
# TypeError: about_me() missing 1 required positional argument: 'lang'
위의 예시 1을 보면 input parameter를 필요한 갯수 만큼 입력하지 않아서 error가 생김
def function(non-default, default) --> 작동
def about_me(name,lang="python"):
print(f"Hello, I am {name}. I am studying {lang}.")
about_me("Jina") # Hello, I am Jina. I am studying python.
def function(default, non- default) --> error
def about_me(name="Jina",lang):
print(f"Hello, I am {name}. I am studying {lang}.")
about_me("python")
# SyntaxError: non-default argument follows default argument
위의 예시를 보면 둘 다 default가 적용되어 있는데, 예시 2는 제대로 작동하고 예시 3은 error 발생
위의 예시2와 3을 보면 (non-default, default) 가능 / (default, non- default) 불가능
파이썬에서 parameter를 혼합하여 사용하는 경우 (positional argument / default argument) 인터프리터가 어떤 값이 어떤 인수와 일치하는지 결정하는 것은 불가능
예시 3을 참고하면
예시 2의 경우
따라서 (non-default, default) 만 가능