ai-creator

[python 독학] 7. def - 함수 본문

유치한 파이썬

[python 독학] 7. def - 함수

ai-creator 2020. 8. 22. 13:24
반응형

유치한 파이썬에 오신 것을 환영합니다.

오늘은 [def - 함수] 입니다.

오늘은 아래와 같은 순서로 배워보겠습니다.

 

1. 들어가기

2. 함수를 배우는 이유

3. 함수 사용법

4. [문제] 구구단 을 함수로 만들기

5. 정리하기

6. 생각하기

 


1. 들어가기

오늘은 함수를 배워보도록 하겠습니다.

'함수'는 python 기초를 배울 때 필수는 아니에요.

어느 정도 실력이 쌓인 후에 배워도 되는 문법이지만

미리 배워두면 가독성 높은 코드를 작성할 수 있고, 다른 사람이 작성한 코드를 읽을 수 있어서 꽤 유용하답니다.

아직 유용하다는 피부에 잘 와닿지 않으시죠? 괜찮아요. 일단 이런게 있다~ 생각하시거나, 나중에 봐도 되는 chapter입니다.

 

배우겠다 마음 먹으신 분들 모이시죠 ㅎㅎ

'함수'라는 단어를 듣자마자 여러분들의 머리속에 무엇이 그려졌나요?

함수? y = f(x) 수학 시간에 배운거 같은데? 으~~ 머리아파..

 

그림을 보면서 천천히 살펴보죠.

함수를 잘 표현한 그림입니다.

y=f(x) 라는 함수식이 있고, f()가 x^2이라고 했을때 x=3을 넣으면 y=9가 되지요.

x를 '입력',  x^2을 '기능', y를 '출력' 이라고 말합니다.

이 함수의 기능은 무엇이라고요? 입력값을 제곱합니다.

 

수학이여서 머리가 아프지 일상생활의 가전 제품들을 살펴보세요. 다, 함수입니다.

첫째, 믹서기 입니다.

> 입력 : 과일

> 기능 : 과일을 분쇄하여 액체로 만든다

> 출력 : 쥬스

 

두번째, 식기세척기 입니다.

> 입력 : 더러운 그릇

> 기능 : 물과 세제를 사용하여 그릇을 깨끗하게 세정한다.

> 출력 : 깨끗한 그릇

 

가전제품 말고 일상생활에서도 찾을 수 있습니다.

여기는 돈을 주면 열심히 만든 빵으로 교환해주는 곳이죠.

> 입력 : 돈

> 기능 : 빵을 만들고 전시한다

> 출력 : 빵

 

세상은 함수로 이루어졌다고 해도 과언이 아니죠?

 

2. 함수를 배우는 이유

일상생활과 밀접하게 연결되어 있다는 점은 자주 사용한다는 의미이고, 그래서 중요하다는 의미라는 건 눈치채셨죠?함수의 필요성을 좀 더 멋지게 표현해보면,함수는 목적별 = 기능별로 분리하여 가독성 높은 코드를 만들고 재사용성을 높이기 위함이에요.

 

> 믹서기를 보면, 누구든 저것은 믹서기야! 라고 하고,

> 파리바게트를 보면, 누구든 파리바게트구나 라고 말합니다.

 

굳이 돌려보지 않아도 들어가서 확인해보지 않아도 되는거죠.이렇듯 명확하게 만들어진 함수는 굳이 실행해 보지 않아도 '아~ 이런 기능을 하는거구나~' 라고 짐작할 수 있고 (=가독성이 높다),'엇! 이 기능은 나도 필요한 기능인데, 그냥 가져와 써야겠다~' 할 수 있습니다 (재사용성이 높다)

 

그리고, 기능별로 분리해 두었으므로 유지보수가 편하답니다. 믹서기가 고장이 나면, 믹서기만 고치러 가면 되지요.식기세척기가 고장이 나면, 식기세척기만 고치러 가면 됩니다. 믹서기는 고치지 않아도 되죠.즉 1개의 기계에 여러기능을 다 넣었다라고 하면? 즉 믹서기도 되고 식기 세척기도 되요. 그럼 사용은 편리하겠지만, 고장이 났을때 수리하기가 불편하겠지요. 프로그램도 마찬가지 입니다. 하나의 프로그램에 온갖 소스코드를 다 적어놓으면, 문제가 발생했을 때 찾기가 매우 힘들죠.

 

함수를 한마디로 표현하라고 한다면?

"기능별-정.리.정.돈"

이렇게 말하고 싶네요.

 

3. 함수 사용법

[함수 만들기]

함수의 구성요소는 3가지 입니다.

1) 입력

2) 기능 

3) 출력  

 

def 함수명(입력1, 입력2, ...):
    return 출력1, 출력2, ...

 

여기서 '함수명'만 필요하고 입력/출력은 상황에 따라 없을 수도 있고 1개 이상일 수도 있습니다.

부모님을 함수로 표현한다고 하면, 받는건 없는데 사랑을 주시죠.

def parent():
    return love

[함수 호출하기]

호출은 만들어둔 함수의 기능을 사용하겠다는 의미입니다.

믹서기를 만들어 놓고 사용하지 않으면 주스를 만들 수 없겠죠.

위에는 [함수 만들기] 는 믹서기를 만드는 것,

[함수 호출하기]는 믹서기를 사용하는 것 입니다.

 

함수를 잘 만들어야 가독성이 좋고, 재사용성이 높으며, 유지보수가 쉽게 되는데

함수를 잘 만드는 방법은 없습니다. 많이 만들어보고, 가독성/재사용성/유지보수를 생각해서 만드는 연습을 하셔야 합니다. 그리고 초보자들께서는 다른 훌륭한 분들의 코드를 보면서 어떻게 작성하면 되는지 감을 익히시면 됩니다. 

 

4. [문제] 구구단을 함수로 만들기

4장~5장에서 다룬 구구단을 함수로 만들어 보겠습니다.

 

[함수 만들기]

def gugudan(dan):
  for num in [1,2,3,4,5,6,7,8,9] :
      print(dan, "x", num, "=", dan*num)

[함수 호출하기]

gugudan(2) 
print("=========")
gugudan(3)

 

[소스 설명]

2단을 만들었던 코드를 그대로 가지고 와서 gugudan() 함수를 만들었습니다.

기능이 2단만 출력하는 것이 아니라, 입력받은 숫자에 대해서 구구단을 출력하는 것으로 생각해 본다면

1) 입력 - 단

2) 기능 - 해당 단을 출력

3) 출력 - 없음 (** 화면에 바로 출력이 되므로, 함수를 호출해서 받아오는건 없습니다)

 

[결과 확인]

 

5. 정리하기

오늘은 어려운 문법을 다뤄서 내용이 길어졌습니다. 이해가 잘 되셨나요?

> 함수란? 특정 기능/목적별로 분리해 놓은 것이다.

> 구성요소는? 입력 - 기능 - 출력

> 필요한 이유는? 가독성 + 재활용성 + 유지보수 를 쉽고 편하게 하기 위해서다.

> 사용법은?

def 함수명(입력1, 입력2, ...):
    기능
    return 출력1, 출력2, ...

6. 생각하기

과제는 2가지 입니다.

첫번째, 6장에서 다룬 성적처리를 함수로 만들어보세요.

1) 입력 : 점수

2) 기능 : 점수를 등급으로 변환한다.

3) 출력 : 등급

으로 만들 수 있겠죠?

 

두번째,

오늘배워 오늘쓰는 OpenAPI  - 뉴스요약 프로젝트 에서 

1) 사용자가 만든 함수가 무엇인지?

2) 입력 - 기능 - 출력은 무엇인지?

3) 호출은 어디서 했는지?

찾아보세요^^

모두 이해하진 못할 수도 있지만,

길게 작성된 코드임에도 부분 부분 어떤 의미인지 이해가되는 신비로운 체험을 하게 되실겁니다 ㅎㅎ

 

댓글 달아주시면, 피드백 드리겠습니다~^^

 

 

 


도움이 되셨다면, 좋아요 / 구독 버튼 눌러주세요~

 

저작물의 저작권은 작성자에게 있습니다.
공유는 자유롭게 하시되 댓글 남겨주세요~
상업적 용도로는 무단 사용을 금지합니다.
끝까지 읽어주셔서 감사합니다^^

반응형
Comments