다음과 같은 코드가 있다고 해봅시다
>>> a = 2 >>> b = 3 >>> c = 4 >>> for i in range( 0, c + 1) : if i == 0 : x = 1 elif i == 1 : x = a else : x = x * a >>> print ( a, "의", c, "제곱은 : " , x ) 2 의 4 제곱은 : 16 >>> for i in range( 0, c + 1) : if i == 0 : x = 1 elif i == 1 : x = b else : x = x * b >>> print ( b, "의", c, "제곱은 : " , x ) 3 의 4 제곱은 : 81
이게 무슨 일을 하는 코드 같습니까? (힌트: 출력 결과를 보세요.) 이 코드는 a의 c제곱, b의 c제곱을 계산해서 출력하는 일을 합니다. 처음 세 줄은 a, b, c를 할당하고 4번째 줄부터 이어지는 for 블록은 a의 c제곱을 처리합니다.for 블록 안에서 i가 0일 때는 x에 1을 저장하고, i가 1일 때는 a를 저장합니다. 그리고 그 이상부터는 루프가 종료할 때까지 x 에 x와 a를 곱한 값을 저장해 나갑니다. 그 아래에 있는 b를 제곱하는 코드도 변수 a가 b로 바뀌었을 뿐, 완전히 똑 같은 코드입니다.
위 코드에는 두 가지 문제가 있습니다. 하나는 이게 무슨 일을 하는 코드인지 당최 알아보기가 힘들다는 것이고, 또 하나는 같은 코드가 중복되어 사용되고 있다는 것입니다. 오늘 이야기할 함수는 이 두 가지 문제를 한 번에 해결할 수 있는 친구입니다.
파이썬에서는 함수를 다음과 같이 키워드 def를 이용하여 정의합니다.
def 함수명 ( 매개 변수 목록 ) : 명령1 명령 2 … return 결과
함수 정의의 맨 첫 줄에 있는 매개 변수 목록은 함수가 계산에 사용할 변수를 입력하는 곳입니다. 외부에서 함수 안에 어떤 데이터를 밀어 넣고 싶으면 이곳에 미리 매개 변수를 정의해둬야 합니다. 한편 매개 변수 목록과는 달리 가장 마지막에 오는 return 은 함수의 결과를 반환하는 구문입니다. 예를 들어 return 11 이라고 하면 11을 함수의 결과로 반환하게 됩니다. 아, 위 형식에서 제가 return을 가장 아래쪽에 두긴 했지만 return은 어느 곳에나 둘 수 있고, 여러 곳에 둘 수도 있습니다. 길게 설명하는 것보다 예제를 하나 보는 게 낫겠죠? 다음은 두 변수를 입력 받아 크기를 비교하여 큰 변수를 다시 반환하는 max() 함수입니다.
>>> def max ( a, b ) : if a > b : return a else : return b >>> max( 3, 4 ) 4 >>> max ( 33, 2) 33
함수는 딱 두 가지만 기억하면 됩니다. 입력: 매개 변수, 출력 : return.
그럼 이제 처음에 봤던 문제의 코드를 다시 함수를 이용하여 간추려 보겠습니다.
>>> def myPow( base, exponent ) :
result = 0
for i in range( 0, exponent + 1) :
if i == 0 :
result = 1
elif i == 1 :
result = base
else :
result = result * base
return result
>>> print ("2의 4제곱은 : " , myPow(2, 4 ))
>>> print ("3의 4제곱은 : " , myPow(3, 4 ))
오늘은 함수에 대해 간단히 정리했습니다. 내일은 클래스가 무엇인지, 클래스를 어떻게 정의하는지 정리해보겠습니다.
'Python' 카테고리의 다른 글
| [파이썬 일기] #7. 클래스로 나만의 자료형 만들기 (0) | 2009/07/12 |
|---|---|
| [파이썬 일기] #6. 함수로 코드 간추리기 (0) | 2009/06/25 |
| [파이썬 일기] #5.4. continue와 break (0) | 2009/06/09 |
| [파이썬 일기] #5.2. for문, #5.3 while 문 (0) | 2009/06/02 |
| [파이썬 일기] #5. 프로그램 흐름 제어하기 (0) | 2009/05/31 |
| 파이썬 공부 중간 점검. (0) | 2009/05/22 |

