brunch

You can make anything
by writing

C.S.Lewis

by 박경아 Mar 11. 2021

8. 내가 원하는 것을 만들어 쓴다, 함수

파이썬으로 데이터 분석하기

처음에 함수를 접했을 때 엄청 어려운 거 아니야? 수학에서 함수도 어려운데 프로그래밍에서 함수라니? 이런 생각이 잠깐 들었다. 그런데 파이썬에서 함수는 파이썬이 미리 만들어 놓은 내장(Built-in) 함수 말고 내가 필요한 기능을 직접 만들어 쓰는 기능이라 생각하면 된다.


앞서 엑셀 대비 파이썬의 장점 가운데 하나로 지속적으로 발생하는 데이터를 반복적으로 분석해야 한다면 파이썬을 사용하는 게 낫다고 했다. 만약 웹페이지마다 반복적으로 어떤 작업을 해야 한다면 코드를 복사해 일일이 사용할 수도 있지만 함수로 정의해 두면 함수만 호출해서 원하는 횟수만큼 반복할 수 있을 것이다. 


우선 함수의 기본 구조는 다음과 같다.


함수의 기본구조


함수는 def라는 단어로 시작한다. 여기서 def는 definition의 약자이다. 즉, 함수를 아래와 같이 정의한다는 뜻이다. 그리고 함수의 이름은 변수 이름과 마찬가지로 임의로 마음대로 지으면 된다. 그 다음 (:)콜론을 찍고 엔터를 누르면 자동으로 들여쓰기가 된다. 이 들여쓰기가 된 부분에 적은 코드들이 함수를 호출했을 때 실행되는 기능 부분이 된다.


함수를 빠져나와 함수를 호출하면 들여쓰기 한 부분의 코드들이 실행된다. 앞에서 배운 연산자를 활용해 어떤 수를 4로 나눴을 때 나머지를 반환하는 함수를 한 번 만들어 보자.


4로 나눴을 때 나머지를 반환하는 함수


여기서 함수를 정의할 때 사용하는 변수를 매개변수라고 하는데, 위 함수는 num이라는 한 개 매개변수를 사용했다. 함수의 기능 부분에 매개변수를 사용해 원하는 기능을 정의한다. 나중에 만들어진 remainder( ) 함수에 11을 대입하면 3이라는 값이 나오는데 여기서 11과 같이  실제 함수 호출 시 대입하는 값을 인수라고 한다.


return은 함수에서만 유니크하게 사용되는 키워드, 파이썬은 return을 만나는 순간 함수가 끝났다고 생각 하고 결과값을 돌려준 다음 함수를 빠져나가게 된다. 위 함수는 다른 기능은 없고 바로 4로 나눈 결과값을 돌려주는 간단한 함수라 할 수 있다. 함수를 호출하면 그 결과값은 호출 구문의 오른쪽에 나오게 된다.


return을 사용하지 않으면 어떻게 될까? 어떤 결과값도 저장되지 않는다. 실제 return을 제외하고 위 함수를 다시 정의해 호출해 보면 아무런 값도 나오지 않는다. 코드 실행결과를 화면에 나타내주는 print 함수로 다시 한 번 확인해 봐도 아무런 값이 없다(None)고 나온다. 그래서 결과값을 저장해야 하는 경우 함수는 return을 사용해야 한다.


함수의 기능 부분에 print 함수를 넣은 경우 결과값이 아니라 특정 문구를 출력할 수 있다. 이 때 print 함수는 실행 결과를 화면에 출력하는 함수가 아니라 새로 만든 함수가 수행해야 할 명령문(동작)의 하나로 인식될 뿐이다.

함수 내에 사용된 print 함수는 함수가 실행해야 할 명령문의 하나로 인식될 뿐이다.


함수의 매개변수는 사용하지 않아도 되고 1개, 2개 등 함수의 정의에 따라 적절히 사용할 수 있다. 단, 함수의 정의에서 집어넣은 매개변수는 함수 기능 부분에 모두 사용되어야 한다. 함수의 매개변수에는 기본값을 설정할 수도 있는데, 함수 호출 시 해당하는 인수가 없다면 기본값을 사용하게 된다.


함수에 기본값을 미리 설정해 놓은 좋은 예가 바로 앞서 배운 프린트 함수이다. 이미 print 함수 정의에서 기본값들이 정의되어 있고, 실제 함수 호출 시 띄어쓰기 등을 변경하고 싶을 때는 sep=’ ‘와 같이 같이 키워드와 변경하고자 싶은 값을 동시에 써주는 방식으로 인수를 전달했다. 이를 키워드 인수 방식이라 하고, 반대로 키워드 없이 함수에서 정의한 위치대로 매개변수에 들어갈 값만 써주는 경우를 위치 인수 방식이라 한다.

 

위치 인수로 전달할 때는 함수에서 정의한 순서대로 인수값을 넣어주면 되고, 키워드 방식의 경우 변수에 대응하는 이름이 지정되기 때문에 위치를 마음대로 해도 상관없다. 다만 위치 인수와 키워드 인수를 섞어서 사용하는 경우는 위치를 우선해 인수를 적어줘야 한다.


간단하더라도 나만의 함수를 우선 하나라도 만들어 보자. 수를 넣으면 무조건 1을 더해주는 함수? 홀수인지 짝수인지 판별해 주는 함수? 어떤 것이든 앞으로 자주 사용하는 기능을 정의해 놓고 간편하게 쓸 수 있는 것이 함수라고 생각하면 된다.





* 참고자료

캐글 강의 https://www.kaggle.com/learn/overview

점프투파이썬 https://wikidocs.net/book/1

파이썬 초보 학습자를 위한 4시간에 배우는 파이썬 기초문법

https://joshua-mobile-choi-1756.trinket.io/python-3-4#/tasks/task-1-print-statement

How to think like a computer scientist : Learning with Python 3

http://openbookproject.net/thinkcs/python/english3e/  

매거진의 이전글 7. 계속해서 사용하고 싶을 땐 변수
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari