파이썬 함수

업데이트:

1. 함수?

profile

프로그래밍에선 함수란 어떠한 입력 받은 값을 가지고 어떠한 일을 수행해서 거기에 맞는 결과값을 산출해내는 것 입니다.

1.1 함수를 사용하는 이유

프로그래밍을 하다보면 중복된 내용을 작성할 때가 있습니다. 만약 한 학생의 점수 총합을 구해야 하는데 100명의 학생들이 있다고 했을때 각각의 학생들의 점수들을 일일히 더하는 것보다 점수만 입력받고 총합을 반환하는 함수를 만들면 중복된 코드가 발생하지 않고 간편하게 구할 수 있습니다.
또한 언제든 만들어놓은 함수를 재사용할 수 있습니다.

student1Total = 60 + 30 + 50
student2Total = 70 + 55 + 80
student3Total = 77 + 50 + 60

def sum(국어,영어,수학):
  return 국어+영어+수학

student1Total = sum(60,30,50)
student2Total = sum(70,55,80)
student3Total = sum(77,50,60)

1.2 파이썬 함수의 사용

def 함수명(매개변수):
  ...
  return

파이썬에서 함수를 사용할 때에는 def를 사용해서 만들고 이어 함수이름 그리고 안에 매개변수를 받습니다.
예제로 간단하게 곱셈 결과를 반환하는 함수를 만들어보겠습니다.

def multiple(x,y): # 매개변수로 받은 x,y값을 곱해서 반환
  return x*y

a=3
b=4
multipleResult=multiple(a,b) # 인수로 a,b 값을 전달 합니다.
print(multipleResult)

1.3 매개변수, 인수 차이

언뜻 보면 비슷하지만 어디서 사용하느냐에 따라 용어가 틀리므로 기억해야합니다.

  • 매개변수
    매개변수는 함수에서 전달받는 변수를 “매개변수”라고 부릅니다.

  • 인수
    인수는 multipleResult=multiple(a,b)와 같이 함수에 전달하는 변수를 “인수”라고 부릅니다

2. 다양한 함수의 형태

2.1 입력값과 반환값이 있는 함수

def add(a,b):
  return a+b

2.2 입력값이 있고 반환값이 없는 함수

def printSum(a,b):
  print("%d + %d = %d" % (a,b,(a+b))

2.3 입력값이 없고 반환값이 있는 함수

def hello():
  return 'Hello World'

2.4 입력값과 반환값이 없는 함수

def hello():
  print('Hellow World')

3. 매개변수

3.1 매개변수 지정

일반적으로 함수에 인수값을 전달할 때에는 순서대로 매개변수에 값이 전달됩니다. 하지만 인수로 전달할 때 매개변수 이름을 직접 지정하여 값을 전달할 수도 있습니다.

def sub(x,y):
  return x-y

print(sub(x=5, y=2))
print(sub(y=5, x=2))
# result
3
3

3.2 매개변수에 초깃값 지정

함수에 전달 받는 값인 매개변수는 일반적으로 인수로 전달된 값을 받지만, 초깃값을 미리 설정하여 해당 매개변수로 값이 들어오지 않았을 경우에 초깃값을 사용할 수 있게 만들 수 있습니다.

def sub(x,y=77):
  return x-y

print(sub(x=5, y=2))
print(sub(x=2))
# result
3
-75

4. 가변 매개변수

만약 함수를 작성하는데 매개변수로 들어올 값들을 모르겠다면 가변 매개변수를 사용하여 해결가능합니다.

4.1 가변 매개변수 사용

def 함수명 (매개변수1, 매개변수2,...*가변 매개변수):
  ...
  • 주의사항
    1. 가변 매개변수 뒤로는 일반적인 매개변수가 올 수 없습니다.
    2. 가변 매개변수는 단 하나만 사용이 가능합니다.
def multiple(a, *data):  # 가변인자를 받는데 처음 받는 매개변수 a * 가변 매개변수
    for i in data:
        print(a * i, end=' ')

multiple(3, 1, 2, 3, 4, 5)
print()
multiple(5, 1, 2, 3)
# result
3 6 9 12 15
5 10 15

5. 함수의 리턴값은 하나

함수의 리턴값은 절대적으로 하나입니다.

5.1 리턴값 예제

def sub(x, y):
    return x-y
    return x+y


print(sub(x=5, y=2))
#result
3

이와 같이 되는 이유는 함수는 return을 하게될 경우 값을 반환하고 함수를 종료하게 됩니다. 즉 x-y의 값을 반환하고 sub 함수를 종료해버립니다. 이러한 특성을 이용해 return 다양하게 사용할 수 있습니다.

5.2 return을 활용한 예제

앞서 설명드린 것과 같이 return을 사용하여 특별한 상황일 때 함수를 빠져나올 수 있습니다.
많은 예시가 있지만 함수안에 반복문을 빠져나오는 것을 해보겠습니다.

def multiple(x, *data):
    result = 0
    for n in data:
        result = x*n
        if result >= 20:
            return print('result 값( %d )가 20보다 크거나 같기 때문에 함수를 종료합니다' % (result))
    return print('result 값 : %d ' % (result))

multiple(5, 1, 2, 3, 4, 5, 6)
# result
result ( 20 ) 20보다 크거나 같기 때문에 함수를 종료합니다

보면 “아니 함수에서는 return값이 무조건 하나라고 하지 않았나요??” 라고 하실 수도 있지만 구조상 보면 결국 return 값은 하나 입니다. result값이 20이상이 된 경우와 아닌 경우 결국 하나의 return값만을 반환하게 됩니다.
결과를 보면 result 값이 20 이상이기 때문에 return print('result 값 : %d ' % (result)) 이 문장이 실행 되지 않는 것을 볼 수 있습니다.

점프투파이썬
림코딩

댓글남기기