Python Basic/혼공파
[혼공파] Chapter 05 ②함수의 활용
EASYH
2021. 1. 12. 15:01
- 는 개념 정리
- 는 개인적으로 새롭게 알게 된 점
5-2. 함수의 활용
재귀 함수
- 재귀 함수란 어떤 함수에서 자신을 다시 호출하여 작업을 수행하는 방식의 함수
팩토리얼을 구하는 방법
- 반복문으로 팩토리얼 구하기
- 재귀 함수로 팩토리얼 구하기
1. 반복문으로 팩토리얼 구하기
2. 재귀 함수로 팩토리얼 구하기
재귀 함수의 문제
- 재귀 함수는 상황에 따라서 같은 것을 기하급수적으로 많이 반복함.
e.g. 피보나치 수열
- 트리 내부에 있는 각각의 노드 값을 계산하려면, 덧셈을 한 번 씩 해야 함.
- 현재 코드의 재귀 함수는 한 번 구했던 값이라도 처음부터 다시 계산해야 함. 따라서 계산 횟수가 기하급수적으로 늘어남.
- 현재 문제는 같은 값을 구하는 연산을 반복하고 있기 때문이고,
- 따라서 같은 값을 한 번만 계산하도록 코드를 수정.
메모화
- 딕셔너리를 사용해서 한 번 계산된 값을 저장함 => 이를 메모 (memo) 한다고 표현함.
- 딕셔너리에 값이 메모되어 있으면, 처리를 수행하지 않고, 곧바로 메모된 값을 돌려주면서 코드의 속도를 빠르게 만듦.
조기 리턴
- 과거 프로그래밍을 할 때 변수는 반드시 앞쪽에 몰아서 선언하고, 리턴은 반드시 뒤쪽에서 해야한다는 비공식적인 규칙이 있었으나
- 현재는 필요할 때 return을 사용하면 된다는 인식이 널리 퍼짐.
- 들여쓰기 단계가 줄기 때문에 코드를 더 쉽게 읽을 수 있음. 이렇게 흐름 중간에 return 키워드를 사용하는 것을 조기 리턴 (early return) 이라고 함.
좀 더 알아보기 ① 코드에 이름 붙이기
코드의 가독성을 향상시키기 위해
- 주석이 있는 코드
- 함수를 활용한 코드
를 활용할 수 있음.
좀 더 알아보기 ② 코드 유지보수
코드의 유지보수를 원활하게 하기 위해
- 변수 사용
- 함수 사용
의 방법을 통하여, 요청 사항 등이 있을 때, 이를 쉽게 반영하여 수정할 수 있음.
e.g.
- 3.14를 숫자로 입력한 상태
def get_circumference(radius):
return 2 * 3.14 * radius
def get_circumference(radius):
return 3.14 * radius * radius
- 3.14를 PI라는 변수로 설정한 상태
def get_circumference(radius):
return 2 * PI * radius
def get_circumference(radius):
return PI * radius * radius
요청사항으로 3.14를 3.141592로 변경한 경우,
3.14를 PI라는 변수로 설정한 상태에서 유지보수가 훨씬 쉬움.