⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
27. 함수의 반환값
마지막 수정일: 2023-12-17
이번에는 함수의 반환값을 배워보겠습니다.
함수의 본질
뜬금없이 함수의 본질에 대해 언급하는 이유는 함수에 반환값이 있는 이유를 납득시키기 위해서입니다. 이렇게 본질을 파악하면 우리가 배운 함수의 개념을 조금 더 명확히하여 나중에 헷갈릴 일이 없도록 해줍니다.
학창 시절 수학 시간에 함수를 배워본 적 있을 것입니다. 주로 아래와 같은 형식으로 표현되곤 했죠.
y = 2x + 3
갑자기 수학이 나오다니! 머리가 아프실 수 있지만 더이상 어렵게 하진 않겠습니다. 아무튼, 위 함수는 일차함수로서 y가 2x + 3을 나타냅니다.
우리가 x에 1, 2, 3, 4...를 넣어보면 y의 값은 각각 5, 7, 9, 11...이 됩니다. 프로그래밍을 배우려는 것이므로 당장 계산해야 하는 것은 아닙니다. 중요한 것은, 무언가 입력(x:input)이 있다면 출력(y:output)이 있다는 것이죠.
프로그래밍에서의 함수도 마찬가지입니다. 우리가 어떤 입력을 주면, 무언가 작업을 열심히 해서 출력을 뱉어내는 구조를 함수라고 합니다. 여기서 '입력'을 인수로, '출력'은 반환값으로 부릅니다. 인수를 전달하여 함수를 호출하는 작업은 해보았죠?
![함수 작업이라고 적힌 상자 위쪽의 구멍으로 인수를 넣어, 상자 아래의 구멍으로 반환값이 나오는 모습](/static/image/27-1.png)
![2x + 3 = y라고 적힌 상자 위쪽의 구멍으로 3과 2가 적힌 구슬을 넣어, 상자 아래의 9와 7이 적힌 구슬이 나오는 모습](/static/image/27-2.png)
우리는 지금까지 "함수는 무언가 일을 한다" 라고만 알고 있었습니다. MsgBox
를 사용하면 알림 상자를 화면에 출력하는 작업만 해줬죠.
그러나 함수는 (필요한 경우) 그 일의 결과 또한 반환해줍니다. 우리는 MsgBox
를 사용하면서 함수의 반환값을 사용한 적은 없습니다.
함수의 반환값
함수를 함수명(인수)
처럼 호출하면, 그 호출부는 작업을 마친 후 결괏값을 가집니다.
우리는 이 과정을 '함수가 값을 반환했다'라고 부를 것입니다.
즉, 함수는 작업을 마친 후 결괏값을 반환합니다. 그 값을 알아보기 위해 대입 연산자를 사용해서 변수에 반환값을 담아볼 수 있습니다.
1 var := MsgBox("Hello")
2 MsgBox(var)
MsgBox
함수도 값을 반환합니다.
위 예제와 같이 사용하면, MsgBox
가 실행된 후 적절한 값이 반환되어 var
변수에 담길 것입니다.
어떤 값이 담기는지 실행해볼까요?
![Hello라고 적힌 알림 상자의 모습](/static/image/27-3.png)
![OK라고 적힌 알림 상자의 모습](/static/image/27-4.png)
알림 상자가 열려있는 동안은 코드 진행이 멈춘다는 점은 이미 말씀드렸죠?
첫 번째 알림 상자를 닫으면 이어서 두 번째 알림 상자가 열립니다.
두 번재 알림 상자에는 '사진 4'와 같이 OK
라고 출력이 될 것입니다.
눈치채신 분도 계시겠지만, MsgBox
의 반환값은 사용자가 누른 버튼입니다.
MsgBox
강좌에서 나왔던 표를 기억하시나요?
버튼의 종류 | 수 | 문자열 |
---|---|---|
확인 (기본값) | 0 | OK 또는 O |
확인 취소 | 1 | OKCancel 또는 O/C 또는 OC |
중단 다시 시도 무시 | 2 | AbortRetryIgnore 또는 A/R/I 또는 ARI |
예 아니요 취소 | 3 | YesNoCancel 또는 Y/N/C 또는 YNC |
예 아니요 | 4 | YesNo 또는 Y/N 또는 YN |
다시 시도 취소 | 5 | RetryCancel 또는 R/C 또는 RC |
취소 다시 시도 계속 | 6 | CancelTryAgainContinue 또는 C/T/C 또는 CTC |
이 표에서 각 버튼의 영문명을 확인할 수 있는데, '확인' 버튼은 OK, '취소'는 Cancel 등 각 버튼의 영문명이 반환된다는 것을 알 수 있습니다.
우리는 '확인' 버튼을 눌렀기 때문에 OK
라는 반환값이 var
변수에 담겨 출력되었던 것이죠.
그렇다면 아래와 같은 경우는 어떨까요?
1 var := MsgBox("Press any button", "Title", "Y/N")
2 MsgBox("Selected button: " var)
이미 배우셨듯이, MsgBox
의 Options 매개변수로 "Y/N"
을 전달해주면 예
아니요
버튼이 있는 알림 상자를 만들 수 있습니다.
알림 상자의 예
를 누르면 Yes가 출력되고, 아니요
를 누르면 No가 출력되는 것을 볼 수 있습니다.
이제 MsgBox
에서 반환값을 받아 출력하는 방법을 익히셨나요?
다른 함수도 마찬가지입니다.
함수 호출부에 대입 연산자를 통해 반환값을 변수에 담을 수 있죠.
물론, 아래와 같이 대입하지 않고 바로 사용할 수도 있습니다.
1 MsgBox(CookRamyeon(Param))
위 코드는 CookRamyeon(Param)
의 반환값이 출력되겠죠?
반환값을 쓰는 이유
MsgBox
의 예시를 보았다싶이, 함수를 호출하면 그 호출문으로 값이 반환되어옵니다.
따라서 우리는 반환값을 변수로 받아서 추후에 사용할 수 있습니다.
함수마다 다르지만, 어떤 함수는 실행한 결과를 반환해줍니다. 앞으로는 내장 함수를 강좌할 때 그 반환값을 제가 같이 알려드리도록 하겠습니다. 어떤 값이 반환되는지 알면 여러 동작을 할 수 있습니다.
정리: 함수의 반환값
1. 함수의 호출부는 작업을 마친 후 결괏값을 가지는데, 이를 '함수가 값을 반환한다'라고 한다.
2. 필요한 경우, 함수는 그 실행 결과를 반환한다.
3. 예를 들어서 MsgBox
는 사용자가 선택한 버튼이 무엇인지를 반환한다.
다음 강은 '반복문'에 대해 배우겠습니다.