본문 바로가기

교육 노트/파이썬 강의

[파이썬 때려잡기] Python 강의 15 - 함수와 프로시져

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 1 - Hello World!

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 2 - 변수와 자료형, 연산자

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 3 - 파이썬의 자료구조, 리스트 (list)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 4 - 파이썬의 스트링 (string)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 5 - 스트링과 리스트 처리-1

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 6 - 스트링과 리스트 처리-2

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 7 - 튜플 (tuple)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 8 - 딕셔너리 (Dictionary)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 9 - 집합 (set)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 10 - 사용자 입출력

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 11 - 변수와 메모리

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 12 - 조건과 조건문(분기문)

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 13 - 반복문 while문

2018/09/10 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 14 - 반복문 for문


프로그램을 만들다보면 중복해서 사용되는 기능들이 나오게되고

이걸 죄다 복붙을 통하여 해결하다보면 코드가 지저분해지고 길어지게 된다.


파이썬 에서는 이러한 기능을 묶어 재사용할수있도록 일종의 모듈화가 가능한데 이것이 바로 함수이다


1. 함수란

특정한 기능을 수행하도록 나눠진 작업 단위,
수학에서의 함수와 비슷한 의미를 가진다.


def funcname(parameter_list):
<내용>
return <반환값>

def를 통하여 함수를 정의하고 funcname에 함수 이름 parameter_list에 인자를 받고 내용을 수행한 후

반환값을 반환해준다.

대충 이런구조를 띄게 된다.


예를 들어 인자에 1을 더하여 반환해주는 plusOne 함수를 작성해보면


def plusOne(x):
return x+1

과 같이 함수를 정의하고

해당 함수를 사용할 때 함수를 호출한다고 하느데

함수명과 파라미터를 사용해서 호출한다.

y = plusOne(5)
print (y)

다음과 같이 쓰면 6이 나오게된다.

함수에 매개변수로 5가 들어가고 본문에서 5+1을 리턴해주고 리턴값은 6이 된다. 이 6이 함수를 호출한 위치에 리턴값이 들어가

y = 6이 된다.


ps. 조금 다른뜻이긴한데 대충 인자 == 매개변수 == 파라미터


두개를 더하는 함수를 만들면 다음과 같다.

def plus(x,y):
return x+y

x = plus(10,20)
print (x)

해당 프로그램은 다음과 같이 동작한다





2. 함수의 리턴값

return 을 하지않는 함수를 만들수도 있다. 예를들어 그냥 받은 내용을 print()하기만 한다든가..

def myPrint(x):
print(x)

myPrint("KIKI")

함수문법이긴 하지만 반환값이 없으면 함수라기보다(수학적으로 함수가 아님) 서브루틴, 프로시져 등으로 불린다.


반대로 return 해줘야할 정보가 많으면 어떻게 할까

def multiReturn(x,y):
return x
return y

이렇게 해주면 될까?

안된다.  return은 함수의 종료를 의미하기도 하기때문에 이렇게 하면 밑에 return y는 가지도 못하고 return x에서 끝나게 된다.

즉 return 이 여러개 있을순 있지만 (if문등으로) 한번 호출에는 한번 리턴이 최대이다

그래서 python에서는 튜플을 활용하여 많은 정보를 리턴해준다.


def multiReturn(x,y):
return x,y


a,b = multiReturn(5,6)

print (a)
print (b)


5
6

다음과 같이 x,y를 리턴해주면

x,y 가 (x,y)로써 리턴이 되고 (튜플 문법인데 괄호를 생략할수있다.)

a,b = (5,6) 이되고 이는 순서대로 들어가게 된다. (이 역시 튜플 문법이고 a = multiReturn(5,6) 하면 a는 튜플 (5,6) 이 된다.)

swap에서 했던 방법이 이러한 원리로 작동하는것이다.






1. 해당 숫자가 소수 (prime number)인지 판별하는 함수를 작성하라.

2. 리스트를 인수로 받아서 해당 리스트에서 가장큰 숫자를 찾아서 리턴해주는 MAX 함수를 작성하라.



728x90