특정한 작업을 반복하여 사용할 경우 함수를 만들어 놓으면 편하다.
함수 정의 방식은 다음과 같다.
함수 예시
#함수 선언
def add(n1,n2) #매개변수를 전달
result = n1 + n2 #작업
return result #return화으로 결과 반환
#함수 호출
print(add(4,5))
#출력
9
함수안에서 다른함수를 호출할 수도 있으며 자기 자신도 호출할 수 있다.(재귀함수)
#재귀 함수 선언
def countdown(n):
if ( n == 0) :
return
print(n)
countdown(n-1)
#함수 호출
countdown(10)
#출력
10
9
8 ...
함수가 전달받은 인자와 함수 내부에서 선언된 변수들은 함수 내부에서만 상호작용한다.
즉, 함수 밖에서 선언된 변수를 함수에서 사용할 수 있지만 밖의 변수 함수 내부에서 수정할 수 없다.
함수밖에서 선언된 변수를 글로벌 변수
, 함수 내부에서 선언된 변수를 지역 변수
라 한다.
함수 내부에서 글로벌 변수앞에 global
키워드를 붙이면 수정이 가능하다.
글로벌(global) 키워드 활용 예시
n = 2
print("변경 전 n : ",n)
def change():
global n
n = 3
print("함수 내부에서 변경 : ",n)
return
change()
print("함수 종료 후 n :",n)
# 출력
변경 전 n : 2
함수 내부에서 변경 : 3
함수 종료 후 n : 3
lambda를 사용하면 함수 선언을 간결하게 할 수 있다. 위에서 구현한 더하기 함수를 예로 들어보겠다.
#위의 더하기 함수 예시
def add(n1,n2) #매개변수를 전달
result = n1 + n2 #작업
return result #return화으로 결과 반환
#함수 호출
print(add(4,5))
#출력
9
lambda를 활용하면 다음과 같다.
result1 = lambda n1,n2:n1+n2
result2 = (lambda n1,n2:n1+n2)(1,5)
print(f'{result1(10,42)}')
print(f'result is : {result2}')
# 출력
52
result is : 9
lambda를 적절히 활용하면 매우 강력한 기능이다. 자주 사용하는 것을 추천한다.
또한, lambda와 map, reduce, filter 함수를 같이 사용하면 유용하다.(다른 포스트에 게시 예정)