04. 함수
1. 함수
- 프로그래밍에 있어서 굉장히 중요
- 프로그래밍을 하다 보면 똑같은 코드가 반복적으로 사용되어야 할 때가 많음
=> 함수를 사용하지 않으면 소스코드를 매번 일일이 작성해야 하므로 소스코드가 길어지며 이로 인해 프로그램의 크기가 비효율적으로 커짐
- 코딩테스트에서 테스트케이스가 입력된 뒤에 테스트 케이스만큼 특정한 알고리즘을 수행한 결과를 반복적으로 출력하도록 요구하는 문제가 출제되는 경우가 많음
=> 문제를 푸는 코드를 함수화하면 매우 효과적으로 풀 수 있음
- 동일한 알고리즘을 반복적으로 수행해야 할 때 함수는 중요하게 사용됨
(1) 함수의 구조
def 함수명(매개변수):
실행할 소스코드
return 반환 값
- 함수를 작성할 때는 함수 내부에서 사용되는 변수의 값을 전달받기 위해 매개변수를 정의할 수 있음
- 이후에 어떤 값을 반환하고자 할 때는 return을 이용
- 이 때 함수에서 매개변수나 return문은 존재하지 않을 수도 있음
(2) 함수의 사용
- 대표적인 함수의 예시 : 더하기 기능을 제공하는 함수
def add(a, b):
return a + b
print(add(3, 7))
<출력>
10
<return문 없이 작성>
def add(a, b):
print("함수의 결과: ", a + b)
add(3, 7)
<출력>
함수의 결과: 10
- 함수를 호출하는 과정에서 다음과 같이 인자를 넘겨줄 때 파라미터의 변수를 직접 지정해서 값을 넣을 수 있음
예) 함수 처리 과정에서 매개변수로 a, b가 사용될 때 함수를 호출하는 라인에서 인자 a와 b를 지칭해서 각각 값을 넣을 수 있음
=> 매개변수의 순서가 달라도 상관없다는 점이 특징
def add(a, b):
print("함수의 결과: ", a + b)
add(b = 3, a = 7)
<출력>
함수의 결과: 10
(3) global 키워드
- 함수 안에서 함수 밖의 변수 데이터를 변경해야 하는 경우
함수에서 global키워드를 이용
- 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에서 선언된 변수를 바로 참조하게 됨
예) a라는 변수를 함수 안에서도 동일하게 접근하여 값을 변경
a = 0
def func():
global a
a += 1
for i in range(10):
func()
print(a)
<출력>
10
(4) lambda 표현식
- 람다 표현식 사용할 수 있음
=> 함수를 매우 간단하게 작성하여 적용할 수 있음
=> 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징
예) 앞서 정의했던 add()함수와 같은 간단한 함수를 정의해야 할 때는 람다표현식을 효과적으로 사용할 수 있음
- 람다식은 파이썬의 정렬 라이브러리를 사용할 때, 정렬 기준(key)을 설정할 때도 자주 사용됨
def add(a, b):
return a + b
# 일반적인 add() 메서드 사용
print(add(3, 7))
# 람다 표현식으로 구현한 add() 메서드
print((lambda a, b : a + b)(3, 7))
<출력>
10
10
<reference(참조)>
나동빈(2020).<이것이 취업을 위한 코딩 테스트다 with 파이썬>.서울: 한빛미디어(주)