1. 함수의 기본 구조

def 함수이름(매개변수들):
    수행1
    수행2
    return 원하는 함수 결과
  • Example: a와 b를 입력하면 a*b를 출력해주는 prod라는 이름의 함수를 만들자
# 곱셈 함수 만들기
def prod(a, b):
    return a * b

x = prod(2,3)           # 표현1
y = prod(a=2,b=3)       # 표현2
print(x,y)
6 6
  • 이 때 a, b를 매개변수(parameter), 입력한 값 2,3을 인수(arguments)라고 한다.
  • 함수안에서 지정된 변수는 함수 밖에서는 적용되지 않는다.
def sum(a,b):
    c = a + b
    return c

sum(2,3)
#print(c)            # Error! name 'c' is not defined
5

1) return에 여러 결괏값을 지정할 경우

  • return으로 지정한 결괏값은 언제나 하나이며, 여러 개를 입력 했을 경우 튜플(tuple)로 출력한다.
def calc(a,b):
    return(a + b, a - b)

result = calc(2,3)
print(result)
(5, -1)

2) return을 여러 번 반복할 경우

  • return을 여러 개 썼을 때는 맨 처음의 return만 실행된다.
def calc(a,b):
    return(a + b)
    return(a - b)

result = calc(2,3)
print(result)
5

3) 함수를 빠져나가고 싶을 때

  • 특정한 값에 함수를 빠져나가고 싶을 때는 return만 단독으로 쓴다.
def comment(text):
    if text=="바보":
        return
    print("넌 정말 %s야" % text)

comment("최고")
comment("바보")
넌 정말 최고야

4) 함수의 초기값을 지정할 때

  • 매개변수에 초기값을 설정할 수 있다.
def order(coffee,num=1):
    if coffee=="아메리카노":
        return print("%s %d 잔, %d원입니다." % (coffee, num, 4100*num))
    elif coffee=="바닐라라떼":
        return print("%s %d 잔, %d원입니다." % (coffee, num, 4500*num))
    else:
        return print("해당 음료는 sold out 되었습니다.")

result1 = order("아메리카노")
result1 = order("바닐라라떼", 3)
result2 = order("콜드브루")
아메리카노 1 잔, 4100원입니다.
바닐라라떼 3 잔, 13500원입니다.
해당 음료는 sold out 되었습니다.

2. 입력값이 없는 함수

def 함수이름():
    수행1
    수행2
    return 원하는 함수 결과
  • Example: 입력값 없이 환영 문구를 출력하는 notice라는 이름의 함수를 만들자.
def welcome():
    return "안녕하세요. 000에 오신것을 환영합니다!"

a = welcome()
print(a)
안녕하세요. 000에 오신것을 환영합니다!

3. 결괏값이 없는 함수

  • return으로 결괏값을 지정하지 않고 print로 원하는 결과를 볼 수 있다.
  • 결괏값이 없으면 None이라고 출력된다.
  • Example: 'a * b = a*b'라고 출력되는 prod라는 이름의 함수를 만들자.
def prod(a,b):
    print("%d * %d = %d" % (a, b, a*b))

a = prod(2,3)
print(a)
2 * 3 = 6
None

4. 입력값, 결괏값 모두 없는 함수

def welcome():
    print("안녕하세요. 000에 오신것을 환영합니다!")

a = welcome()
print(a)
안녕하세요. 000에 오신것을 환영합니다!
None

5. 매개변수의 개수를 모를 때

  • 매개변수 앞에 ‘*’ 기호를 붙인다.
def 함수이름(*매개변수):
    수행1
    수행2
    return 원하는 함수 결과
  • Example : ‘sum’이라고 입력하면 입력값들을 모두 더하고, ‘prod’라고 입력하면 입력값들을 모두 곱하는 calc라는 이름의 함수를 만들자.
def calc(func, *numbers):
    if func=="sum":
        result = 0
        for i in numbers:
            result = result + i
    elif func=="prod":
        result = 1
        for j in numbers:
            result = result * j
    else:
        print("Error! func은 sum, prod만 입력 가능합니다")
    return result

calc1 = calc("sum",1,2,3,4,5)
calc2 = calc("prod",1,2,3,4,5)

print(calc1,calc2)

15 120

6. lambda 이용하기

  • 함수를 생성할 때 사용하는 예약어이다.
  • def를 사용할 수 없을 때 주로 쓰인다.
  • 함수를 간결하게 한 줄로 만들 수 있다.
  • return명령어가 따로 없어도 결괏값을 출력한다.
prod = lambda a, b: a*b
result = prod(2,3)
print(result)
6

Reference

댓글남기기