[제로베이스] CH1. Python 기초 - 함수, lambda

정해성·2023년 6월 8일
0

제로베이스

목록 보기
5/36
post-thumbnail

함수

특정한 작업을 반복하여 사용할 경우 함수를 만들어 놓으면 편하다.
함수 정의 방식은 다음과 같다. 함수 예시

#함수 선언
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 키워드를 붙이면 수정이 가능하다.

글로벌(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

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 함수를 같이 사용하면 유용하다.(다른 포스트에 게시 예정)

profile
코린이 공부중

0개의 댓글