티스토리 뷰
[재사용]
0 부터 num 까지 합을 구하는 코드가 있습니다.
num = 10
result = 0
for i in range(num+1):
result += i
print(result)
num 에 10을 넣습니다.
총합을 담을 변수 result 를 0으로 초기화 합니다.
range(num) 까지 하면 num-1 까지 순회하므로 num 까지 돌기 위해서는 num+1 로 해줍니다.
result = result + i 와 result += i 는 동일합니다.
연산자 우선순위에 따라 + 가 먼저 계산되고 그값을 = 연산자로 좌측에 대입되게 됩니다.
그리고 마지막으로 0~10 까지의 총합 result 를 출력하고 55를 확인할 수 있습니다.
그렇다면 0~num 까지 더하는 코드를 한번이 아니라 여러번 사용되게 되면
매번 이 코드를 작성해줘야 할까요??
그렇지 않습니다. 한번만 작성해 놓고 필요할 때 호출해서 사용하면 됩니다.
재사용한다면 코드가 간결해지고 모듈화 되서 유지보수 비용이 줄어 들게 됩니다.
여러곳에서 호출되서 재사용되는 코드만 수정하면 되기 때문입니다.
[함수]
0 부터 num 까지 합을 구하는 코드가 있습니다.
이것을 함수로 작성해서 호출해 볼게요!
def sum(num):
result = 0
for i in range(num+1):
result += i
return result
def 로 시작한다면 함수를 정의 한다는 뜻입니다.
sum 은 함수의 이름이고 이것은 개발자가 임의로 정의할 수 있어요
num 이라는 인자 1개를 sum이라는 함수가 받는 것이고
return result 는 result 이라는 변수의 값을 sum 함수 외부에 전달해 주는것 입니다.
이것은 함수의 정의이고 이것만으로 함수가 동작하지 않습니다.
total = sum(10)
print(total)
sum 이라는 함수를 호출하고 함수안에 10 을 인자값으로 넘겨 준것입니다.
sum 함수의 리턴값을 변수 total 에 받습니다.
sum(10)
이렇게 return 값을 받지 다른 변수에 받지 않아도 함수는 동작은 합니다.
이렇게 함수를 정의 이후에 호출 해줘야 함수가 동작하게 됩니다.
함수의 종료시점은 최초 return 을 만났을때 혹은 함수 안에 모든 코드를 실행했을 때 입니다.
[재귀함수]
A 라는 함수의 정의 내부에서 자기자신 A 를 호출하는 경우를 재귀함수 라고 합니다.
이것을 함수로 작성해서 호출해 볼게요!
def foo(num):
if num > 0:
print("enter=",num)
foo(num-1)
print("exit=",num)
num > 0 의 조건이 참일 때는 아래 3줄의 코드를 실행하고
거짓일 때는 함수를 종료 합니다.
때문에 num > 0 일때만 자기 자신 함수로 재귀 하고 아닐때는
더이상 재귀하지 않고 종료합니다.
만약 num 이 계속 감소해서 0 이 되지 않는다면
무한히 자기 자신을 호출해서 프로그램이 죽게 될거에요.
('enter=', 3)
('enter=', 2)
('enter=', 1)
('exit=', 1)
('exit=', 2)
('exit=', 3)
위 foo 라는 함수를 호출하면 결과가 이렇게 출력됩니다.
모든 enter 가 3,2,1 순서대로 실행되고 exit 는 1,2,3 순서대로 실행됩니다.
모든 재귀는 enter 아래 있고 모든 exit 는 재귀 아래에 있기 때문입니다.
exit 전에 foo 자기자신으로 들어가서 모든 재귀가 끝난다음에
더이상 재귀되지 않을 때 비로소 exit 가 찍히게 됩니다.
[과제]
- 사칙연산을 하는 함수 4개를 작성
- 원의 넓이를 구하는 함수, 사각형의 넓이 구하는 함수 작성
- 리스트와 값을 입력 받아서 입력 받은 리스트에 입력 받는 값을 갖는 요소가 있는지 확인하는 함수 작성
- 재귀함수로 n~0 까지 카운트다운(출력)하는 함수 작성
'python lecture > basic' 카테고리의 다른 글
[edu] 파이썬 시작하기 - 6 (0) | 2018.08.28 |
---|---|
[edu] 파이썬 시작하기 - 5 (0) | 2018.08.27 |
[edu] 파이썬 시작하기 - 3 (for, 반복문) (0) | 2018.08.26 |
[edu] 파이썬 시작하기 - 2 (0) | 2018.08.25 |
[edu] 파이썬 시작하기 - 1 (0) | 2018.08.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 장고 카톡 자동응답
- chatbot
- 파이썬 입문
- 문과 코딩
- GIT
- pycrypto
- 파이썬 독학
- 면접정답
- wsgi
- gitignore
- 장고 플러스친구 자동응답
- gitlab
- 파이썬 프로그래밍
- 문서 비교
- 모바일 스킨 적용
- django chatbot
- 파이썬 강좌
- Tistory
- 엑셀 비교
- 플러스친구 자동응답
- 장고
- virtualenv
- PuTTYGen
- 면접답변
- 이미지 비교
- 모바일 테마 적용
- admin.py
- 파이썬
- Python
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함