[Python] 4. 함수

반복적 수행을 해야하는 경우 유용하게 사용

def 함수명(매개변수):
    소스코드
    return 반환   # return 은 없어도 된다.

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

def add(a, b, sub=False):  # 매개변수의 Default를 설정 가능
    if sub is True:
        return a - b
    return a + b

print(add(3, 5))
>>> 8
print(add(5, 3, True))
>>> 2

람다 표현식(Lambda Express)


함수를 매우 간단하게 작성, 적용 가능

주로 정렬 기준을 설정할때 매우 유용하게 쓰인다.

lambda 인자 : 표현식

# x[0] 기준으로 정렬
li.sort(key=lambda x: x[0])

# add함수
print((lambda a, b: a+b)(3, 7))
>>> 10

map()


map(함수, 리스트)

print(list(map(lambda x: x ** 2, range(5)))
>>> [0, 1, 4, 9, 16]

reduce()


# python 3부터 내장함수에서 제외됨
# 따라서 import를 해야 함. 코테에서 못 쓰게 할 수도 있으니 알아만 두자
from functools import reduce

reduce(함수, 리스트, 초기값=None) # 누적 함

result = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 100)
print(result)   # 100 + ((((1+2)+3)+4)+5) = 115
>>> 115

answer = reduce(lambda x, y: y + x, 'abcde')
print(answer)   # ((((e+d)+c)+b)+a)
>>> 'edcba'

누적을 통해 연산한다

기본 개념을 정확히 이해하자

func = lambda a, b: a if a > b else b
result = reduce(func, [1, 100, 2, 55])
print(result)   # 최대값을 a에 계속 누적하며 구할 수 있다
>>> 100