Function_Parameters
Function parameter
def love(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love("나는", "음식")
def love(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love("나는", "음식")
함수는 input을 parameter로 받아서 return 값을 output으로 호출하는 동작을 합니다. 위와 같은 형식이 기본 형식이고, parameter에는 여러 형태가 있습니다. 오늘 다룰 주제는 각 parameter의 속성과 규칙 입니다.
Keyword Arguments
기본적으로 parameter는 순서에 따라 값을 전달해 주지만, 순서 대신 이름으로 전달하는 방식도 있습니다. 이를 keyword argments라고 합니다. 위의 방식을 사용한다면 실제 parameter의 순서가 바뀌어도 관계없이 사용 가능합니다.
def love(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love(my_name = "나는", your_name "음식")
parameter의 순서를 바꾸어 진행해도 결과값은 같습니다. 이 외에도 입력값을 직관적으로 볼 수 있으므로 가독성이 높아지고, 실수가 줄어드는 장점이 있습니다.
Mixing positional arguments and keyword arguments
기본 형태와 keyword 두 가지를 혼용하는 방식도 가능합니다. 하지만, keyword는 순서가 바뀌어도 상관 없지만 positonal은 순서를 지쿼줘야 하는 점을 주의해야 합니다.
def love(my_name, your_name) :
print(f"{my_name} loves {your_name}")
love(your_name = "음식", "나는")
위의 경우에는 "나는" 부분이 positional인데 함수 parameter에서는 첫 번째에 위치하므로 순서가 잘못되어 SyntaxError가 발생하는 것 입니다. (Error에는 세 가지 종류가 있는데 다음에 따로 포스팅 할 예정입니다.)
Parameter Default Value
함수의 parameter에 직접 default값을 정의하는 방법도 있습니다. default값이 정의된 parameter는 함수 호출 시 따로 값을 주지 않아도 자동으로 넘겨지게 됩니다. 다만, default값이 정해지지 않는 parameter를 non-default value parameter라고 하는데 정의된 parameter가 정의되지 않은 parameter보다 앞에 위치하면 에러가 발생합니다.
def love(my_name = "나는", your_name) :
print(f"{my_name} loves {your_name}")
이 경우, default value parameter인 my_name이 non-default value parameter인 your_name보다 앞에 위치하므로 SyntaxError가 발생하게 됩니다.
default / non-default value parameter
그렇다면 함수를 정의할 때 왜 default value parameter를 non-default value parameter 앞에 정의하면 안 되는 것일까?
그렇다면 함수를 정의할 때 왜 default value parameter를 non-default value parameter 앞에 정의하면 안 되는 것일까?
내 생각에는 parameter의 수를 세는 방식은 non-default value parameter의 수를 세는 것과 같다고 생각한다. 그래서 default value parameter 앞에 non-defualt value parameter가 온다면 parameter의 개수로 인식하지 못하고 오류가 발생하여 SyntaxError가 발생하는 것이라 생각한다.
Author And Source
이 문제에 관하여(Function_Parameters), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dat0802/Function-Parameters저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)