반응형

오늘은 파이썬의 함수에 대해서 알아볼 것이다. 
함수를 잘 사용하면, 프로그램의 흐름을 잘 파악할 수 있다.

# 함수
# 함수란 무엇인가?
# 함수를 설명하기 전에 믹서를 생각해 보자. 우리는 믹서에 과일을 넣는다.
# 그리고 믹서를 사용해서 과일을 갈아 과일 주스를 만든다. 우리가 믹서에 넣는 과일은 "입력"이 되고 과일 주스는 "출력(결과값)"이 된다.
# 그렇다면 믹서는 무엇인가?

# (믹서는 과일을 입력받아 주스를 출력하는 함수와 같다.)
# 우리가 리뷰하려는 함수가 바로 믹서와 비슷하다. 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는것, 이것이 바로 함수가 하는 일이다.
# 우리는 어려서부터 함수에 대해 공부했지만 함수에 관해 깊이 생각해 본 적은 별로 없다. 예를 들어 y = 2x + 3도 함수이다.
# 하지만 이를 수학 시간에 배운 직선 그래프로만 알고 있지 x에 어떤 값을 넣었을 때 어떤 변화에 의해서 y값이 나오는지 그 과정에 대해서는 별로 관심을 두지 않았을 것이다.
# 이제 우리는 함수에 대해 조금더 생각해 보는 시간을 가져야 한다. 프로그래밍에서 함수는 정말 중요하기 때문이다.

# 함수를 사용하는 이유는 무엇일까?
# 프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성하고 있는 자신을 발견할 때가 종종 있다.
# 이때가 바로 함수가 필요한 때이다.
# 즉 반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다"라는 식의 함수로 작성하는 것이 현명하다.

# 함수를 사용하는 또 다른 이유는 자신이 만든 프로그램을 함수화하면 프로그램 흐름을 일목요연하게 볼 수 있기 때문이다.
# 마치 공장에서 원재료가 여러 공정을 거쳐 하나의 상품이 되는 것처럼 프로그램에서도 입력한 값이 여러 함수를 거치면서 원하는 결괏값을 내는 것을 볼 수 있다.
# 이렇게 되면 프로그램 흐름도 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다. 함수를 잘 사용하고 함수를 적절하게 만들 줄 아는 사람이 능력 있는 프로그래머이다.

# 파이썬 함수의 구조
# 파이썬 함수의 구조는 다음과 같다.
# def 함수명(매개변수):
#     <수행할 문장1>
#     <수행할 문장2>
#     ...

# def는 함수를 만들 때 사용하는 예약어 이며, 함수 이름은 함수를 만드는 사람이 임의로 만들 수 있다.
# 함수 이름 뒤 괄호 안의 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.
# 이렇게 함수를 정의한 다음 if, while, for문 등과 마찬가지로 함수에서 수행할 문장을 입력한다.

# 간단하지만 많은 것을 설명해주는 다음 예를 보자.
def add(a, b):
    return a + b
# 위 함수는 다음과 같이 풀이된다.
# "이 함수의 이름(함수 이름)은 add이고 입력으로 2개의 값을 받으며 결과값은 2개의 입력값을 더한 값이다"
# 여기에서 return은 함수의 결과값을 돌려주는 명령어이다. 먼저 다음과 같이 add함수를 만들자.
def add(a, b):
    return a+b
# 이제 직접 add 함수를 사용해 보자.
a = 3
b = 4
c = add(a,b)
print(c)
# 변수 a에 3, b에 4를 대입한 다음 앞에서 만든 add 함수에 a와 b를 입력값으로 넣어 준다. 그리고 변수 c에 add 함수의 결과값을 대입하면 print(c)로 c의 값을 확인 할 수 있다.

# 매개변수와 인수
# 매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해 두자.
# 매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 함수를 호출할 때 전달하는 입력값을 의미한다.
def add(a, b): #a, b는 매개변수
    return a + b

print(add(3, 4)) # 3, 4는 인수

# [같은 의미를 가진 여러가지 용어들에 주의하자]
# 프로그래밍을 공부할 때 어려운 부분 중 하나가 용어의 혼용이라고 할 수 있다.
# 우리는 공부하면서 원서를 보기도 하고 누군가의 번역본을 보기도 하면서 의미는 같지만 표현이 다른 용어를 자주 만나게 된다.
# 한 예로 입력값을 다른 말로 함수의 인수, 매개변수 등으로 말하기도 하고 결과값을 출력값, 반환 값, 돌려주는 값 등으로 말하기도 한다.
# 이렇듯 많은 용어가 여러 가지 다른 말로 표현되지만 의미는 동일한 경우가 많다.

# 입력값과 결과값에 따른 함수의 형태
# 함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결과값을 돌려준다.
# 입력값 ---> 함수 ---> 결과값
# 함수의 형태는 입력값과 결과값의 존재 유무에 따라 4가지 유형으로 나뉜다. 자세히 알아보자.

# 일반적인 함수
# 입력값이 있고 결과값이 있는 함수가 일반적인 함수이다.
# 앞으로 여러분이 프로그래밍을 할 때 만들 함수는 대부분 다음과 비슷한 형태일 것이다.
# def 함수이름(매개변수):
#     <수행할 문장>
#     ...
#     return 결과값
# 다음은 일반 함수의 전형적인 예이다.
def add(a, b):
    result = a + b
    return result
# add 함수는 2개의 입력값을 받아서 서로 더한 결과값을 돌려준다.
# 이 함수를 사용하는 방법은 다음과 같다. 입력값으로 3과 4를 주고 결과값을 돌려받아 보자.

a = add(3, 4)
print(a)
# 이처럼 입력값과 결과값이 있는 함수의 사용법을 정리하면 다음과 같다.
# 결과값을 받을 변수 = 함수이름(입력인수1, 입력인수2)

# 입력값이 없는 함수
# 입력값이 없는 함수가 존재할까? 당연히 존재한다. 다음을 보자.
def say():
    return 'hi'
# say라는 이름의 함수를 만들었다. 그런데 매개변수 부분을 나타내는 함수 이름 뒤의 괄호 안이 비어 있다. 이함수는 어떻게 사용하는 걸까?

# 다음을 직접 입력해보자.
a = say()
print(a)
# 위 함수를 쓰기 위해서는 say()처럼 괄호 안에 아무 값도 넣지 않아야 한다.
# 이 함수는 입력값은 없지만 결과값으로 Hi라는 문자열을 돌려준다. a = say()처럼 작성하면 a에 Hi 문자열이 대입되는 것이다.

# 이처럼 입력값이 없고 결과값만 있는 함수는 다음과 같이 사용된다.
# 결과값을 받을 변수  = 함수이름()

# 결과값이 없는 함수
# 결과값이 없는 함수 역시 존재한다. 다음 예를 보자.
def add(a, b):
    print("%d, %d의 합은 %d입니다." %(a, b, a + b))
# 결과값이 없는 함수는 호출해도 돌려주는 값이 없기 때문에 다음과 같이 사용한다.
add(3, 4)
# 즉 결과값이 없는 함수는 다음과 같이 사용한다.
# 함수이름(입력인수1, 입력인수2)
# 결과값이 진짜 없는지 확인하기 위해 다음 예를 직접 입력해 보자.
a = add(3, 4)
# 아마도 여러분은 '3, 4의 합은  7입니다.'라는 문장을 출력해 주었는데 왜 결과값이 없다는 것인지 의아하게 생각할 것이다.
# 이 부분이 초보자들이 혼란스러워 하는 부분이기도 한데, print문은 함수의 구성 요소 중 하나인 <수행할 문장>에 해당하는 부분일 뿐이다.
# 결과값은 당연히 없다. 결과값은 오직 return명령어로만 돌려받을 수 있다.

a = add(3, 4)
print(a)
# a값은 None이다. None이란 거짓을 나타내는 자료형이라고 언급한 적이 있다.
# add 함수처럼 결과값이 없을 때 a = add(3, 4)처럼 쓰면 함수는 add 반환 값으로 a변수에 None을 돌려준다. 이것을 가지고 결과값이 있다고 생각하면 곤란하다.

# 입력값도 결과값도 없는 ㅎ마수
# 입력값도 결과값도 없는 함수 역시 존재한다. 다음 예를 보자.
def say():
    print('Hi')
# 입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결과값도 없는 함수이다.
# 이 함수를 사용하는 방법은 단 한 가지이다.
say()
# 즉 입력값도 결과값도 없는 함수는 다음과 같이 사용한다.
# 함수이름()

# 매개변수 지정하여 호출하기
# 함수를 호출할 때 매개변수를 지정할 수도 있다. 다음 예를 보자.
def add(a, b):
    return a + b
# 앞에서 알아본 add 함수이다. 이 함수를 다음과 같이 매개변수를 지정하여 사용할 수 있다.
result = add(a = 3, b = 7)
print(result)
# 매개변수를 지정하면 다음과 같이 순서에 상관없이 사용할 수 있다는 장점이 있다.
result = add(b = 5, a = 3) # a에 3, b에 7을 전달
print(result)

# 입력값이 몇 개가 될ㅈ지 모를 때는 어떻게 해야 할까?
# 입력값이 여러 개일 때 그 입력값을 모두 더해 주는 함수를 생각해 보자.
# 하지만 몇 개가 입력될지 모를 떄는 어떻게 해야 할까?
# 아마도 난감할 것이다. 파이썬은 이런 문제를 해결하기 위해 다음과 같은 방법을 제공한다.

# def 함수이름(*매개변수):
#     <수행할 문장>
#     ...

# 일반적으로 볼 수 있는 함수 형태ㅐ에서 괄호 안의 매개변수 부분이 *매개변수로 바뀌었다.

# 여러 개의 입력값을 받는 함수 만들기
# 다음 예를 통해 여러 개의 입력값을 모두 더하는 함수를 직접 만들어 보자
# 예를 들어 add_many(1, 2)이면 3을, add_many(1, 2, 3)이면 6을, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이면 55를 돌려주는 함수를 만들어 보자.
def add_many(*args):
    result = 0
    for i in args:
        result = result + i
    return result
# 위에서 만든 add_many 함수는 입력값이 몇 개이든 상관이 없다. *args처럼 매개 변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 주기 때문이다.
# 만약 add_many(1, 2, 3)처럼 이 함수를 쓰면 args는 (1, 2, 3)이 되고, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9,10)처럼 쓰면 args는 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이 된다. 여기에서 *args는 임의로 정한 변수 이름이다.
# 여기에서 *args는 임의로 정한 변수 이름이다.
# *pey, *python처럼 아무 이름이나 써도 된다.

# 실제로 이 함수를 직접 실행해 보자.
result = add_many(1, 2, 3)
print(result)

result = add_many(1, 2, 3, 4, 5, 6 ,7, 8, 9, 10)
print(result)
# add_many(1, 2, 3)으로 함수를 호출하면 6을 돌려주고, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)을 대입하면 55를 돌려준다.
# 여러 개의 입력을 처리할 때 def add_many(*args)처럼 함수의 매개변수로 *args만 사용할 수 있는 것은 아니다.
# 다음 예를 보자.
def add_mul(choice, *args):
    if choice == "add":
        result  = 0
        for i in args:
            result = result + i
    elif choice == "mul":
        result = 1
        for i in args:
            result = result * i
    return result
# add_mul 함수는 여러 개의 입력값을 의미하는 *args 매개변수 앞에 choice 매개변수가 추가되어 있다.
# 이 함수는 다음과 같이 사용할 수 있다.
result = add_mul('add', 1, 2, 3, 4, 5)
print(result)
result = add_mul('mul', 1, 2, 3, 4, 5)
print(result)
# 매개변수 choice에 'add'가 입력된 경우 *args에 입력되는 모든 값을 더해서 15를 돌려주고, 'mul'이 입력된 경우 *ags에 입력되는 모든 값을 곱해서 120을 돌려준다.

# 키워드 파라미터 kwargs
# 이번에는 키워드 파라미터에 대해 알아보자. 키워드 파라미터를 사용할 때는 매개변수 앞에 별 두개(**)를 붙인다. 역시 이것도 예제로 알아보자. 먼저 다음과 같은 함수를 작성한다.
def print_kwargs(**kwargs):
    print(kwargs)
# print_kwargs 함수는 매개변수는 kwargs를 출력하는 함수이다. 이제 이 함수를 다음과 같이 사용해 보자.
print_kwargs(a = 1)
print_kwargs(name = 'foo', age = 3)
# 입력값 a = 1또는 name = 'foo', age = 3이 모두 딕셔너리로 만들어져서 출력된다는 것을 확인할 수 잇다.
# 즉 **kwargs 처럼 매개변수 이름 앞에 **을 분이면 매개변수 kwargs는 딕셔너리가 되고 모든 key=value 형태의 결과값이 그 딕셔너리에 저장된다.

# ※ 여기에서 kwargs는 keyword arguments의 약자이며 args와 마찬가지로 관례적으로 사용한다.

# 함수의 결과값은 언제나 하나이다.
# 먼저 다음 함수를 만들어 보자.
def add_and_mul(a, b):
    return a + b, a * b
# ※ add_and_mul 함수는 2개의 입력 인수를 받아 더한 값과 곱한 값을 돌려주는 함수이다.

# 이 함수를 다음과 같이 호출하면 어떻게 될까?
result = add_and_mul(3, 4)
# 결과값은 a + b와 a * b 2개인데 결과값을 받아들이는 변수는 result 하나만 쓰였으니 오류가 발생하지 않을까? 당연한 의문이다. 하지만 오류는 발생하지 않는다.
# 그 이유는 함수의 결과값은 2개가 아니ㅏㄹ 언제나 1개라는 데 있다.
# add_and_mul 함수의 결과값 a + b와 a * b는 튜플값 하나인 (a + b, a * b)로 돌려준다.

# 따라서 result변수는 다음과 같은 값을 항상 같게된다.
print(result)
# 즉 결과값으로 (7, 12)라는 튜플 값을 갖게 되는 것이다.
# 만약 이 하나의 튜플 값을 2개의 결과값처럼 받고 싶다면 다음과 같이 함수를 호출하면 된다.
result1, result2 = add_and_mul(3,4)
print(result1)
print(result2)
# 이렇게 호출하면 result1, result2 = (7, 12)가 되어 result1으 7이 되고 result2는 12가 된다.

# 또 다음과 같은 의문이 생길 수도 있다.
def add_and_mul(a, b):
    return a + b
    return a * b
# 위와 같이 return문을 2번 사용하면 2개의 결과값을 돌려주지 않을까? 하지만 파이썬에서 위와 같은 함수는 참 어리석은 함수다.
# 그 이유는 add_and_mul 함수를 호출해 보면 알 수 있다.
result = add_and_mul(2, 3)
print(result)
# ※add_and_mul(2, 3)의 결과값을 5 하나뿐이다. 두 번째 return문인 return a * b 는 실행되지 않았다는 뜻이다.
# 이 예에서 볼 수 있듯이 두번쨰 return문인 return a * b는 실행되지 않았다. 따라서 이 함수는 다음과 와전히 동일하다.
def add_and_mul(a, b):
    return a + b
# w즉 함수는 return문을 만나는 순간 결과값을 돌려준 다음 함수를 빠져나가게 된다.

# [return의 또 다른 쓰임새]
# 특별한 상황일 때 함수르 ㄹ빠져나가고 싶다면 return을 단독으로 써서 함수를 즉시 빠져나갈 수 있다. 다음 예를 보자.
def say_nick(nick):
    if nick == "바보":
        return
    print(("나의 별명은 %s 입니다") % nick)
# 위 함수는 '별명'을 입력으로 전달받아 출력하는 함수이다.
# 이 함수 역시 반환 값(결과값)은 없다. (문자열을 출력한다는 것과 반환 값이 있다는 것은 전혀 다른 말이다. 혼동하지 말자. 함수의 반환 값은 오로지 return문에 의해서만 생성된다.)

# 만약에 입력값으로 '바보'라는 값이 들어오면 문자열을 출력하지 않고 함수를 즉시 빠져나간다.
say_nick('야호')
say_nick('바보')
# 이처럼 return으로 함수를 빠져나가는 방법은 실제 프로그래밍에서 자주 사용한다.

# 매개변수에 초깃값 미리 설정하기
# 이번에는 조금 다른 형태로 함수의 인수를 전달하는 방법에 대해서 알아보자.
# 매개변수에 초깃값을 미리 설정해 주는 경우이다.
def say_myself(name, old, man = True):
    print("나의 이름 %s 입니다." % name)
    print("나이는 %d살입니다." % old)
    if man :
        print("남자입니다.")
    else:
        print("여자입니다.")
# ※ say_myself 함수는 3개의 매개변수를 받아서 마지막 인수인 man이 True이면 "남자입니다.", False이면 "여자입니다."를 출력한다.

# 위 함수를 보면 매개변수가 name, old, man = True 이렇게 3개다. 그런데 낯선 것이 나왔다. man = True처럼 매개변수에 미리 값을 넣어 준 것이다.
# 이것이 바로 함수의 매개변수 초깃값을 설정하는 방법이다. 함수의  매개변수에 들어갈 값이 항상 변하는 경우가 아닐 경우에는 이렇게 함수의 초깃값을 미리 설정해 두면 유용하다.

# say_meyself함수는 다음처럼 사용할 수 있다.
say_myself("박응용", 65)
say_myself("박응용", 65, True)
# 입력값으로 "박응용",27처럼 2개를 주면 name에는 "박응용" old에는 27이 대입된다. 그리고 man이라는 변수에 입력값을 주지 않았지만 초깃값 True를 갖게된다.
# 따라서 위 예에서 함수를 사용한 2가지 방법은 모두 동일한 결과를 출력한다.

# 이제 초깃값이 설정된 부분을 False로 바꿔보자.
# man 변수에 False값이 대입되어 다음과 같은 결과가 출력된다.
say_myself("박응선", 27, False)

# 함수의 매개변수에 초깃값을 설정할 때 주의할 것이 하나 있다. 만약 위에서 본 say_myself 함수를 다음과 같이 만들면 어떻게 될까?

# def say_myself(name, man = True, old):
#     print("나의 이름은 %s 입니다." %name)
#     print("나이는 %d살입니다." % old)
#     if man:
#         print("남자입니다.")
#     else:
#         print("여자입니다.")

# 이전 함수와 바뀐 부분은 초깃값을 설정한 매개변수의 위치이다. 결론을 미리 말하면, 이것을 함수를 실행할 때 오류가 발생한다.
# 얼핏 생각하기에 위 함수를 호출하려면 다음과 같이 하면 될 것 같다.
# say_myself("박응용", 27)
# 위 문장과 같이 함수를 호출한다면 name 변수에는 "박응용"이 들어갈 것이다. 하지만 파이썬 인터프리터는 27을 man 변수와 old 변수 중 어느 곳에 대입해야 할지 알 수 없게 된다.

# 오류 메시지를 보면 다음과 같다.
# SyntaxError: non-default argument follows default argument
# 위 오류 메시지는 초깃값을 설정해 놓은 매개변수 뒤에 초깃값을 설정해 놓지 않은 매개변수는 사용할 수 없다는 뜻이다.
# 즉 매개변수로 (name, old, man = True)는 되지만 (name, man = True, old)는 안된다는 것이다.
# 초기화시키고 싶은 매개변수를 항사아 뒤쪽에 놓는 것을 잊지 말자.

# 암수 안에서 선언한 변수의 효력 범위
# 함수 안에서 사용할 변수의 이름을 함수 밖에서도 동일하게 사용한다면 어떻게 될까?
# 다음 예를 보자.
a = 1
def vartest(a):
    a = a + 1

vartest(a)
print(a)
# 먼저 a 라는 변수를 생성하고 1을 대입한다. 다음 입력으로 들어온 값에 1을 더해 주고 결과값은 돌려주지 않는 vartest 함수를 선언한다.
# 그리고 vartest 함수에 입력값으로 a를 주었다. 마지막으로 a의 값을 출력하는 print(a)를 입력한다. 과연 결과값은 뭐가 나올까?

# 당연히 vartest함수에서 매개변수 a의 값에 1을 더했으니까 2가 출력될 것 같지만 프로그램 소스를 작성해서 실행해 보면 결과값은 1이 나온다.
# 그 이유는 함수 안에서 새로 만든 매개변수는 함수 안에서만 사용하는 "함수만의 변수"이기 때문이다.
# 즉 def vartest(a)에서 입력값을 전달받는 매개변수 a는 함수 안에서만 사용하는 변수이지 함수 밖의 변수 a가 아니라는 뜻이다.

# 따라서 vartest함수는 다음처럼 변수이름을 hello로 한 vartest함수와 완전히 동일하다
def vartest(hello):
    hello = hello + 1
# 즉 함수 안에서 사용하는 매개변수는 함수 밖의 변수 이름과는 전혀 상관이 없다는 뜻이다.

# 다음 예를 보면 더욱 분명하게 이해할 수 있을 것이다.
def vartest(a):
    a = a + 1

vartest(3)
print(a)
# 위 프로그램 소스를 에디터로 작성해서 실행하면 어떻게 될까?
# 오류가 발생할 것이라고 생각한 사람이라면, 모든 것을 이해한 사람 일 것이다.
# vartest함수 안에서 a는 4가 되지만 함수를 호출하고 난 뒤에 pritn(a)문장은 오류가 발생하게 된다.
# 그 이유는 print(a)에서 입력받아야 하는 a변수를 어디에서도 찾을 수가 없기 때문이다.
# 다시 말하지만 함수 안에서 선언한 매개변수는 함수 안에서만 사용될 뿐 함수 밖에서는 사용되지 않는다.
# 이것을 이해하는 것은 매우 중요하다.

# 함수 안에서 함수 밖의 변수를 변경하는 방법
# 그렇다면 vartest라는 함수를 사용해서 함수 밖의 변수 a를 1만큼 증가시킬 수 있는 방법은 없을까?
# 이 질문에는 2가지 해결 방법이 있다.

# 1. return 사용하기
a = 1
def vartest(a):
    a = a + 1
    return a
a = vartest(a)
print(a)
# 첫 번쨰 방법은 return을 사용하는 방법이다. vartest 함수는 입력으로 들어온 값에 1을 더한값을 돌려준다.
# 따라서 a = vartest(a)라고 대입하면  a가 vartest함수의 결과값으로 바뀐다.
# 여기에서도 물론 vartest함수 안의 a 매개변수는 함수 밖의 a와는 다른 것이다.

# 2. global 명령어 사용하기
a = 1
def vartest():
    global a
    a = a + 1

vartest()
print(a)
# 두 번재 방법은  global명령어를 사용하는 방법이다.
# 위 예에서 볼 수 있듯이 vartest함수 안의 global a 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다.
# 하지만 프로그래밍을 할 때 global명령어는 사용하지 않는 것이 좋다.
# 왜냐하면 함수는 독립적으로 존재하는 것이 좋기 때문이다.
# 외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다.
# 그러므로 가급적 global명령어를 사용하는 이 방법은 피하고 첫 번째 방법을 사용하기를 권한다.

# lambda
# lambda는 함수를 생성할 때 사용하는 에약어로 def와 동일한 역할을 한다.
# 보통 함수를 한줄로 간결하게 만들 때 사용한다.
# 우리말로는 "람다"라고 읽고 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.

# 사용법은 다음과 같다.

# lambda 매개변수1, 매개변수2, ...:매개변수를 이용한 표현식
# 한번 직접 만들어보자.

add = lambda a, b: a + b
result = add(3, 4)
print(result)
# add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda함수이다.
# 위 예제는 def를 사용한 다음 함수와 하는 일이 완전히 동일하다.

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

result = add(3, 4)
print(result)
# ※ lambda 예약어로 만든 함수는 retrun 명령어가 없어도 결과값을 돌려준다.

# Review complete

함수 리뷰의 핵심

  • 함수란 무엇인가?
  • 함수를 사용하는 이유
  • 파이썬 함수의 구조
  • 매개변수와 인수
  • 일반적인 함수
  • 입력값이 없는 함수
  • 결과값이 없는 함수
  • 입력값도 결과값도 없는 함수
  • 매개변수 지정하여 호출하기
  • 입력값이 몇 개가 될지 모를 때
  • 함수의 결과값은 언제나 하나
  • 매개변수에 초깃값 미리 설정하기
  • 함수 안에서 선언한 변수의 효력 범위
  • 함수 안에서 함수 밖의 변수를 변경하는 방법
  • lamda

오늘은 파이썬의 함수에 대해서 리뷰했다. 함수는 정말 중요하니 자주보고 눈에 익히도록 하자.
정리한 코드를 공유한다!
https://github.com/mgkim-developer/Python-Basic-Grammar/blob/main/(4-1)Function.py

 

GitHub - mgkim-developer/Python-Basic-Grammar: Python Basic Grammar Study

Python Basic Grammar Study. Contribute to mgkim-developer/Python-Basic-Grammar development by creating an account on GitHub.

github.com

 

반응형