TIL - 파이썬 입문 4 (함수)

MinWoo Park·2021년 2월 13일
0

TIL

목록 보기
10/49
post-thumbnail

Today I Learned

매일 배운 것을 정리하며 기록합니다. Python 함수에 대해 공부하고 있습니다.


함수(function)

  • 코드의 집합
  • 함수명 뒤에 소괄호를 사용하여 실행(호출)함
  • 괄호 안에는 여러 가지 자료를 넣을 수 있으며 이러한 자료를 매개변수라고 부름
  • 함수를 호출하여 얻게 되는 결과를 리턴값이라고 함
  • ex)
def 함수 이름():
	문장

가변 매개변수

  • 매개변수를 원하는 만큼 받을 수 있는 함수
  • 가변 매개변수 뒤에는 일반 매개변수가 올 수 없음
  • 가변 매개변수는 하나 만 사용할 수 있음

기본 매개변수

  • 매개변수에 아무것도 넣지 않아도 들어가는 값
  • '매개변수=값' 형태로 사용
  • 기본 매개변수 뒤에는 일반 매개변수가 올 수 없음

키워드 매개변수

  • 가변 매개변수와 기본 매개변수 둘을 같이 쓸 수 있게 해주는 매개변수
  • 매개변수 이름을 지정해서 입력하는 매개변수

리턴

  • 함수를 실행했던 위치로 돌아가라는 뜻으로, 함수가 끝나는 위치를 의미

재귀 함수(recursion)

  • 자기 자신을 호출하는 것을 의미
  • 대표적인 예시로 팩토리얼, 피보나치 수열이 있음
  • ex)
def factorial(n):
	if n === 0:
	    	return 1
    	else: 
        	return n * factorial(n -1)
   

factorial(5) # 120

메모화(memorization)

  • 재귀 함수가 같은 값을 구하는 연산을 반복하기 때문에 오래걸리는 문제를 해결하는 방법
  • dictionary를 사용하여 한 번 계산한 값을 저장함, 이를 메모한다고 표현함
    -ex)
# 메모 변수를 만듦
memo = {
	1: 1,
	2: 1
}

# 함수 선언
def fibonacci(n):
	if n in memo:
    		return memo[n]
        else:
        	output = fibonacci(n -1) + fibonacci(n -2)
            	memo[n] = output
                return output

fibonacci(10) # 55

튜플(tuple)

  • 리스트와 비슷하지만 한 번 결정된 요소는 바꿀 수 없다는 특징이 있음
  • 함수의 리턴에 튜플 사용 시 여러 개의 값을 리턴하고 할당할 수 있어 함수와 함께 많이 사용됨
  • ex)
# 튜플 생성 
tuple_test = (10, 20, 30)

# 튜플 출력
tuple_test[0] # 10
tuple_test[1] # 20
tuple_test[2] # 30

# 괄호 없는 튜플
tuple_test1 = 10, 20, 30, 40
print(tuple_test1) # (10, 20, 30, 40)
print(type(tuple_test1)) # <class 'tuple'>

# 여러 개의 값 리턴
def test():
	return (10, 20)
a, b = test()

# 출력
print(a) # 10
print(b) # 20

람다(lambda)

  • 매개변수로 함수를 전달할 때 함수를 쉽게 선언하는 방법
  • 함수를 매개변수로 전달하는 대표적인 표준함수에는 map(),filter() 함수가 있음
  • map() 함수는 함수와 리스트를 받아 리스트 요소를 함수에 넣어 리턴된 값으로 새로운 리스트를 구성해줌
  • filter() 함수는 함수와 리스트를 받아 리스트 요소를 함수에 넣어 리턴된 값이 True인 것으로 새로운 리스트를 구성해줌
  • ex) lambda 매개변수: 리턴값
# map()
output_a = map(lambda x: x * x, list_input_a)
print(list(output_a))  # [1, 4, 9, 16, 25]

# filter()
output_b = filter(lambda x: x < 3, list_input_a)
print(list(output_b))  # [1, 2]


Reference : 윤인성, 『혼자 공부하는 파이썬』, 한빛미디어 (2019)

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글