함수 정의는 'def' 키워드를 사용하여 정의합니다. 함수 정의는 다음과 같은 구조입니다.
함수이름에는 정의할 함수의 이름을 적어줍니다.
매개변수는 함수에 전달되는 입력 값으로, 위에서 말했듯 필요에 따라 생략할 수 있습니다.
위의 예시에서 my_print()은 *args라는 가변인자를 가지고 있습니다.
함수가 호출될 때 넘어오는 모든 인자들이 튜플 args에 저장되고, 함수 내에서 이를 반복문을 통해 접근하여 처리할 수 있습니다.
위의 예시에서 info() 함수는 **kwargs라는 키워드 매개변수를 가지고 있습니다. 함수가 호출될 때 넘어오는 키워드 인자들이 딕셔너리 kwargs에 저장되고, 함수 내에서 이를 반복문을 통해 접근하여 처리할 수 있습니다.
가변인자와 키워드 매개변수는 함수 정의 시 사용하는 것이며, 함수 호출 시에는 해당 매개변수에 전달되는 값을 적절하게 지정하여 사용하면 됩니다. 이를 통해 다양한 인자의 개수와 순서를 유연하게 처리할 수 있습니다.
함수에서 반환값을 지정하기 위해서는 return 키워드를 사용합니다. return 키워드 다음에 오는 표현식은 함수의 실행 결과로 반환됩니다. 반환값이 없는 경우에는 return 문을 생략하거나 return만 작성하여 함수를 종료할 수 있습니다.
위의 코드에서 add_numbers() 함수는 인자로 전달받은 a와 b를 더한 값을 return을 사용하여 반환합니다. 함수를 호출한 결과는 result 변수에 저장되고, 이후 출력되는 값은 함수의 반환값인 7입니다.
또한, get_programming() 함수는 name이 "Python"인 경우에는 "Hello, Python!"를 반환하고, 그 외의 경우에는 "Hello, stranger."를 반환합니다. get_greeting("Clang")을 호출한 결과는 greeting 변수에 저장되고, 출력되는 값은 "Hello, stranger."입니다.
함수의 반환값을 활용하여 함수의 결과를 변수에 저장하거나 다른 연산에 활용할 수 있습니다. 반환값은 함수가 완료되면 호출자에게 돌려지므로, 함수의 결과를 적절히 활용하여 프로그램을 구성할 수 있습니다.
위의 예시에서 'global_var'는 함수 외부에서 정의된 전역 변수입니다. my_function() 함수 내에서도 전역 변수를 참조하여 사용할 수 있습니다.
위의 예시에서 local_var는 my_function() 함수 내에서 정의된 지역 변수입니다. 함수 내에서만 사용할 수 있으며, 함수 외부에서는 접근할 수 없습니다. 따라서 my_function()을 호출한 이후에 local_var를 사용하면 NameError가 발생합니다.