Search

'파이썬 파이썬 함수'에 해당되는 글 1건

  1. 2009/06/25 [파이썬 일기] #6. 함수로 코드 간추리기

다음과 같은 코드가 있다고 해봅시다

>>> 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 ))

오늘은 함수에 대해 간단히 정리했습니다. 내일은 클래스가 무엇인지, 클래스를 어떻게 정의하는지 정리해보겠습니다.