본문 바로가기

Programming/Python

[파이썬 프로그래밍] 15화 함수(function)의 정의

[파이썬 프로그래밍] 15화 함수(function)의 정의




 이썬 프로그래밍이 어느덧 15화를 지나고 있습니다. 파이썬 끝나고, 루비,펄,C++,C#,알고리즘,자료구조,

데이터베이스 등등... 정보보안의 핵심인 기반지식중에서 '프로그래밍'쪽으로 포커스를 맞추고 연재하려는 

욕심은 있는데 과연 스케쥴이라는 변명으로 자꾸 연재가 늦어질까봐 노심초사하고 있습니다.


아무튼 이번 시간에는 프로그래밍의 핵심인 '함수'에 대해서 진입합니다.

아무래도 프로그래밍은 문법마다 거의 비슷한데요. 제어문,반복문,함수,출력문 정도만 알면 거의 왠만한

프로그램을 짤 수가 있습니다. 


C언어를 공부하신 분들도 함수의 중요성을 익히 들으셨을겁니다

또한 프로그래밍이 처음이시라면 파이썬은 효율적인 언어이기 때문에 오히려 C보다 먼저 하는 것도

좋다고 생각합니다. 파이썬 문법만 다끝내도 사실 C,C++의 중요개념을 다뤄보기 때문에 

다른 언어로 확장하기에도 좋으며 C,C++언어 와의 연동도 파이썬의 매력중의 하나 입니다.


함수입문 하는 시간으로서 어떻게 함수를 정의하는지 기본 골격에 대해서 공부해 보도록 하겠습니다.




함수(function)의 정의



- 파이썬에서 함수는 자신이 직접 정의 할수도 있지만 이미 만들어져 있는 함수가 있습니다.

그러나 프로그램 특성상 마치 레고로 성을 만든다고 할때, 자신만의 개성있는 성을 쌓기 위해서는

기본블록을 자신이 직접 이리저리 짜맞추어서 새로운 블록을 만들듯이 직접 정의해서 함수를 많이 쓰게 될것입니다.


기본골격은 다음과 같습니다.


[파이썬 함수의 정의]


def <함수명>(인자1,인자2,인자3...):

<구문>

return <반환값>



1. 파이썬에서는 들여쓰기가 중요합니다. 함수의 시작과 끝은 코드의 들여쓰기로 구분 됩니다.

2. 함수선언은 def 로 시작해 :(콜론) 으로 끈고 다음에 구문으로 함수가 할일을 명시 합니다.

3. 함수가 필요할떄 그 즉시, 선언하고 사용할 수 있습니다.

4. 함수는 변수와 클래스를 포함해서 모두 객체(object) 로 취급됩니다.




함수만들기 실습




-   def 로 함수객체를 만든다고 선언하고 love 라는 함수를 정의 합니다. 여기서 인자값으로 

girl(소녀),boy(소년) 을 넣어줬습니다.

return문으로 함수를 종료하고 값을 girl+boy라는 더하기를 전달하는 구문을 넣어줬습니다.


type를 보니 function(펑션) 이라고 함수라고 확인할수 있었으며 값으로 1과 1을 넣어주자

역시 예상대로 1+1 = 2 라는 간단한 계산된 값이 반환되어 출력 되었습니다.



아, 그리고 저기 love 라는 함수를 호출했을때 나온 값이 0x02DA0C48 이 무슨 뜻이냐면

바로, love 라고 정의한 함수객체의 메모리 주소를 나타냅니다.


여기서 love는 바로 레퍼런스(Refernce)가 됩니다. 그리고  이 레퍼런스는 바로 0x02DA0C48 

라는 주소의 함수객체를 가리킵니다. 


그림으로 이해 하는것이 빠르니까 그림으로 그려보면 다음과 같습니다.



[ 그림: 레퍼런스 와 함수객체의 관계도 ] 




함수는 중요하지만 , 쉽게 학습할 수 있으니 개념을 익혀두시는 것이 좋습니다 :)