함수
같은 내용의 코드를 여러 번 적는 것은 비효율적이기 때문에 [함수]를 사용합니다. 함수를 사용하면 입력값에 따른 차이만을 가지는 일관적인 코드 재사용이 가능합니다.
함수 선언
파이썬에서 함수를 사용하려면 함수를 선언해야 합니다. 함수가 사용되었을 때 실행할 문장을 입력합니다. 이때 문장에서 매개변수를 사용할 수 있습니다.
def 함수명(매개변수1, 매개변수2, ...):
실행할 문장
return [return값]
매개변수는 함수 선언시 함수에서 사용할 입력값을 의미합니다. 함수를 사용할 때 소괄호(())안에 매개변수를 함께 전달합니다.
함수가 끝날 때 함수를 사용한 쪽에 반환해야 하는 값이 있다면 return 키워드 입력 후 return값을 입력해 줍니다. 반환해야 하는 값이 없을 때는 생략이 가능합니다. 생략할 경우 함수 실행의 자료형은 None이 됩니다.
⚠ 함수 선언은 함수 사용보다 상위에 놓여야합니다.
함수 사용
함수명(인자1, 인자2, ...)
⚠ 함수 선언시에는 입력값을 매개변수라고 부르지만, 함수를 사용할 때에 넣어주는 입력값은 인자라고 합니다. 인자는 실제 값을 갖습니다.
키워드 매개변수 : 함수 사용
함수명(매개변수명1=인자1, 매개변수명2=인자2)
함수를 사용할 때 매개변수명을 직접 입력해 주는 것입니다. 매개변수명=인자의 형태로 입력합니다. 이렇게 키워드 매개변수를 사용하면 매개변수 순서를 지키지 않아도 되고, 어떤 매개변수에 어떤 인자값이 들어가는지 확실하게 할 수 있습니다. 매개변수가 많아지거나, 가변 매개변수와 기본매개변수를 함께 사용할 때 도움이 됩니다.
가변 매개변수 : 함수 선언
매개변수는 일반적으로 사용할만큼 선언합니다. 하지만, 그 개수가 특정되지 않는 상황에서는 가변 매개변수를 사용할 수 있습니다.
def 함수명(매개변수, *가변매개변수):
실행할 문장
가변 매개변수명 앞에 *를 붙여주면 가변 매개변수가 됩니다. 가변 매개변수의 자료형은 튜플(Tuple)입니다.
⚠ 가변 매개변수는 일반 매개변수 뒤에 하나만 선언해야 합니다.
기본 매개변수 : 함수 선언
기본 값이 설정되어 있는 매개변수입니다. 인자를 받지 않아도 됩니다.
def 함수명(매개변수, 기본매개변수=값):
실행할 문장
기본매개변수명 = 값 형식으로 입력합니다.
⚠ 일반적으로 매개변수 중 가장 마지막에 선언합니다.
⚠ 가변 매개변수와 함께 사용할 때는 키워드 매개변수를 사용합니다.
global 키워드
함수 내부에서 함수 외부 변수의 스택에 있는 값을 교체하려고 할 때 사용합니다.
number = 0
def method():
global number
number += 1
함수 내부에서 global 키워드를 붙여 선언한 후 사용합니다.
❓ 스택이란?
- 스택은 기본 자료형 변수의 값, 객체 자료형 변수의 주소값이 저장되는 메모리 공간을 의미합니다.
람다 lambda
람다는 함수를 간결하게 선언하는 방법입니다. 함수도 함수의 매개변수로 사용될 수 있습니다. 이럴 때 람다를 사용하면 직관적이고 쉬운 코드를 만들 수 있습니다.
lambda 매개변수: 표현식
함수 앞에 lambda키워드를 붙이고, 사용할 매개변수: 표현식의 형태로 적으면 됩니다.
❓ 표현식이란?
- 표현식은 결괏값을 반환하는 계산식을 의미합니다.
제너레이터
지난 글에서 제너레이터를 만들 수 있는 제너레이터 표현식에 대해 다뤘었는데요. 함수로도 제너레이터를 만들 수 있습니다.
제너레이터는 이터레이터를 만드는 방법 중 하나입니다. 이터레이터는 [반복할 수 있는 것]을 처리하기 위해 사용됩니다.
def generator_fun():
yield "generator"
함수 내부에서 return 대신 yield 키워드를 사용합니다. yield는 함수 내에서 여러 번 사용할 수 있습니다.
일반적인 방법으로 제너레이터 함수를 실행하면 함수의 내용이 실행되지 않고 제너레이터 객체를 반환합니다. next() 메서드를 통해 함수 내부 코드를 실행할 수 있으며 첫 번째 yield 키워드까지 실행됩니다. 이후, next()를 호출할 때마다 다음 yield 키워드까지의 코드를 실행합니다.
def generator_fun():
yield 1
yield 2
gen = generator_fun()
print(next(gen)) # 1
print(next(gen)) # 2
함수 데코레이터
함수 실행 전후에 꾸며줄 내용을 추가하는 기능입니다. 다음과 같이 데코레이터 함수를 정의하고, 사용하고자 하는 함수 위에 @데코레이터함수명을 붙입니다.
예제
import time
# 데코레이터 함수
def timer(function):
def wrapper():
print("함수 실행을 시작합니다.")
start_time = time.time() # 시작 시간 기록
function() # 원래 함수 실행
end_time = time.time() # 종료 시간 기록
print(f"함수 실행이 종료되었습니다. 실행 시간: {end_time - start_time:.2f}초")
return wrapper
@timer
def long_running_task():
print("작업을 시작합니다...")
time.sleep(2) # 2초 동안 쉬기 (작업이 오래 걸리는 것처럼 가정)
print("작업이 끝났습니다!")
# 함수 실행
long_running_task()
# 함수 실행을 시작합니다.
# 작업을 시작합니다...
# 작업이 끝났습니다!
# 함수 실행이 종료되었습니다. 실행 시간: 2.00초
'개발공부 > Python : 파이썬' 카테고리의 다른 글
파이썬 훑어보기 7 - 모듈 (1) | 2024.12.21 |
---|---|
파이썬 훑어보기 6 - 예외 처리 (1) | 2024.12.18 |
파이썬 훑어보기 4 - 컨테이너 자료형 (0) | 2024.12.16 |
파이썬 훑어보기 3 - 조건문과 반복문 (0) | 2024.12.11 |
파이썬 훑어보기 2 - 변수와 자료형, 연산자 (1) | 2024.12.10 |