본문 바로가기
[ CODING STUDY ]/》파이썬 공부

파이썬 14장(함수_1, 매개변수, 가변매개변수, return, 리턴)

by MRG 2020. 10. 22.
728x90
반응형

▣ 안녕하세요 ^^
오늘은 함수에 대해 공부해보겠습니다.
함수가 무엇일까요?

출저 : 위키백과

▣ 이렇게 우리가 수학 시간에서 배웠던 그림과 동일하게
input x 라는 값을 함수에 넣어주고 
함수안에서함수 안에서 x라는 값을 통해서 함수 안에서 바꾼 다음
바뀐 f에 값을 반환하는 구조라고 생각하시면 됩니다. 


▣ 그럼 함수를 어떻게 만드는지 먼저 알아보도록 하겠습니다. 

 

▣ 먼저 함수를 만들려면 def라는 키워드를 먼저 붙여주셔야 합니다.
define에 약자인 거 같습니다.
그런 다음에 함수 이름을 넣고 () 괄호를 붙어주고 : 콜론을 넣고 함수에 조건을 마무리합니다.
그리고 밑에 함수에 기능들을 넣어줍니다. 
꼭 들여 쓰기가 되어있어야 합니다.
파이썬에 들여 쓰기는 C언어에서 { } 스코프(범위)라고 생각하시면 됩니다. 


▣ 함수를 완성했으면 함수를 불러오겠습니다. 
함수를 부르는 호출이라고 이야기를 합니다. 
함수 이름()을 하면 해당함수를 부르게 됩니다.
그래서 제가 함수이름()을 4번 불렀죠?
그래서 4번 print가 되는 걸 확인할 수 있습니다. 
간단하죠?


▣ 우리는 함수를 지금까지 호출하고 사용했습니다.
print() 함수, input() 함수 등등을 사용했습니다.
다시 말해 함수를 호출하는 방법은 계속 사용했다는 말입니다. 
간단하죠?
그리고 함수 이름은 제가 쉽게 이야기하기 위해서 한글로 작성했습니다.
하지만 영어로 함수 이름을 정해서 연습을 하셔야 합니다.
 

▣ 이번에는 매개변수를 사용해보겠습니다. 
매개변수는 함수 이름(   ) <- 여기 괄호 안에 들어있는 변수를 의미합니다. 

 

▣ 매개변수라는 건 함수 안에서 전달을 받을 변수를 의미합니다.
쉽게 말해 def calculate(매개변수) 안에 있는 변수입니다.
이건 함수를 호출한 곳에서 값을 받습니다.
함수를 호출할 때 
calculate(10,20)을 각각 전달해주면 그 값이 복사돼서 num1, num2라는 매개변수에 전달됩니다. 
그럼 그 함수 안에서 순서대로 더하기를 하고 sum 변수에 넣고 print로 출력하는 형식입니다. 
당연히 변수를 전달할 수도 있습니다.


▣ 제가 숫자를 넣은 건 어떤 순서대로 작동하는지를 표시해주었습니다.
어? 왜 함수부터 실행을 하지 않나요라는 말을 하실 수 있는데
def은 정의입니다. 컴퓨터야 def 이런 함수가 있어라고 정의를 한 건지
실행을 하는 게 아닙니다. 
호출을 할 때 실행이 된다라는 생각해주세요.


▣ 그럼 이런 질문을 하실 수 있을 겁니다. 
함수 안에서 print를 하지 말고 호출한 곳에서 할 수 없느냐라는 질문을 하실 수 있을 겁니다.
그럼 함수 안에 있는 값을 받아와야겠죠?
그게 바로 return입니다.

 

▣ return은 함수 안에서 나를 호출한 곳에 값을 돌려줍니다.
다시 말해 calculate()를 이렇게 호출한 곳에 값을 한 개만 돌려줄 수 있습니다.
그리고 = 대입 연산 자니깐 오른쪽에 있는 값을 왼쪽에 대입하겠죠?
그럼 z에 함수에서 더한 값이 대입이 됩니다.
그리고 출력을 하면 이렇게 50이라는 숫자가 나오게 됩니다. 


▣ 다시 쉽게 정리하겠습니다. 
매개변수는 나를 호출한 코드(아이)한테 값을 받는 저장하는 변수
return은 나를 부른 코드(아이)한테 돌려주는 키워드라고 생각하시면 됩니다.


▣ 그럼 이런 질문이 드실 수 있을 겁니다. 
가변 매개변수는 무엇인가라는 질문이요.
간단한 예제로 살펴보겠습니다.

 

▣ 이렇게 매개변수 앞에 *을 붙이면 매개 변숫값을 몇 개를 전달하든 모든 매개변수가 num1에 저장되는 걸 확인할 수 있습니다.
그리고 num2에는 값이 전달이 안되는 것도 확인할 수 있습니다.
이건 왜 사용할까요?

 

▣ 예를 들어 매개변수를 두 개만 받아 올 수 있게 함수를 정의했다고 생각해봅시다.
그런데 호출하는 곳에서 2개가 아닌 3개를 주었다고 가정해봅시다.
그럼 어떻게 될까요?
한 개에 숫자가 저장된 매개변수가 없기 때문에 이렇게 오류가 나오게 됩니다.
그래서 받아올 매개변수에 값을 예측할 수 없을 때 사용합니다.
그런데 위에 있는 방법처럼 사용하면 안 되겠죠?
*num1에만 숫자를 넣어서 사용하기 때문에 num2가 무용지물이 됩니다.
그럼 이렇게 하시면 됩니다. 

 

▣ 이렇게 가변 매개변수를 두 번째에 두고 
하나에 값을 받을 매개변수를 앞으로 두면 이렇게 
num1에는 처음 값 100만 저장이 되고
*num2 가변 매개변수에는 나머지 값이 튜플로 저장되게 됩니다. 


▣ 자 그럼 return으로 다시 돌아가서 제가 한 가지 값만 전달할 수 있다고 했죠?
그럼 여러 개에 값을 전달하려면 어떻게 해야 할까요?
저번장에 튜플을 공부하셨던 분이라면 아실 겁니다.
이럴 때 튜플을 활용하면 됩니다. 

 

▣ 이렇게 z변수를 튜플로 정의를 하고 여러 개에 값을 return 해서
값을 한꺼번에 전달할 수 있습니다. 



▣ 오늘은 이렇게 함수에 대해 공부해보았습니다.
간단하고 기본적인 내용만 공부했지만,
정말 중요한 부분이기 때문에 꼭 위에 있는 실습들은 꼭 해보시고,
함수를 활용해서 계산기 프로그램을 작성해보세요.
더하기 함수() 빼기 함수() 곱하기 함수() 나누기 함수()
이렇게 함수들을 각각 호출하면 해당 연산을 하고 
그 값을 반환할 수 있게 만들어보세요.


▣ 계속 함수를 활용해보셔야 중복되는 코드, 
그리고 코드를 읽는 가독성에서 많은걸 높일 수 있습니다.
어려우신 게 있거나 궁금하신 질문들 있으면 댓글 남겨주세요.
그럼 다음장에서 뵙겠습니다. 



▣ 포기하지 마세요!!! 저도 했습니다!!! 파이팅!!!

728x90
반응형

댓글