1. 함수의 개요 및 필요성
-
정의: 특정 작업을 수행하는 명령어들의 모음에 이름을 붙인 것 (프로그램의 빌딩 블록)
-
구조: 입력(Input) → [함수: 처리] → 출력(Output/Return)
-
필요성
- 코드의 재사용성 증가 (동일한 처리를 반복할 때 유용)
- 복잡한 문제를 단순한 부분으로 분해하여 해결 가능 (구조화 프로그래밍)
- 소스 코드의 중복을 제거하여 유지보수가 용이함
-
코드를 묶는 방법 3가지
- 함수(Function): 반복되는 코드를 묶음
- 객체(Object): 관련된 변수와 함수를 묶음
- 모듈(Module): 함수나 객체들을 소스 파일 안에 모음
2. 함수의 작성 및 호출
- 함수 정의(Syntax)
def 함수이름(매개변수1, 매개변수2...):
명령문1
명령문2
return 반환값-
함수 호출(Call)
함수이름(인수)형태로 실행하며, 실행 후 호출한 위치로 복귀함
-
실행 순서
- 파이썬은 인터프리터 언어이므로 함수가 호출되기 전에 정의되어 있어야 함
- (단, 함수 내부에서 아직 정의되지 않은 다른 함수를 호출하는 것은 가능)
-
pass키워드- 함수의 헤더만 작성하고 몸체는 나중에 작성할 때 사용
3. 인수(Argument)와 매개변수(Parameter)
-
용어 구분
- 매개변수(Parameter): 함수 정의 시 값을 전달받는 변수
- 인수(Argument): 함수 호출 시 실제로 전달하는 값
-
값의 전달
- 함수에 값을 전달해도 원본 변수의 값(불변 객체인 경우)은 변경되지 않음
- (Call by value와 유사한 동작)
-
다양한 인수의 형태
- 디폴트 인수(Default Argument)
- 매개변수에 기본값을 설정 (
def func(msg="기본값"):) - 인수를 생략하면 기본값이 사용됨
- 매개변수에 기본값을 설정 (
- 키워드 인수(Keyword Argument)
- 인수의 이름을 명시하여 값 전달 (
func(x=10, y=20)) - 순서가 바뀌어도 상관없음
- 인수의 이름을 명시하여 값 전달 (
- 가변 인수(Variable Argument,
*args)- 개수가 정해지지 않은 인수를 튜플 형태로 받음
- 키워드 가변 인수(
**kwargs)- 키워드 인수들을 딕셔너리 형태로 받음
- 디폴트 인수(Default Argument)
-
언패킹(Unpacking)
- 리스트 앞에
*를 붙이면 요소를 풀어서 전달 - 딕셔너리 앞에
**를 붙이면 키워드 인수로 전달
- 리스트 앞에
4. 값의 반환(Return)
-
반환값이 없는 경우
return만 쓰거나 생략하면None이 반환되며 함수가 종료됨
-
단일 값 반환
return 값
-
다중 값 반환
- 파이썬은 여러 개의 값을 튜플 형태로 반환 가능 (
return 1, 2, 3) - 받을 때:
a, b, c = func()형태로 언패킹하여 수신
- 파이썬은 여러 개의 값을 튜플 형태로 반환 가능 (
5. 변수의 범위(Scope)
-
전역 변수(Global Variable)
- 함수 외부에서 정의된 변수
- 프로그램 전체에서 접근 가능
-
지역 변수(Local Variable)
- 함수 내부에서 정의된 변수
- 함수가 종료되면 사라짐
-
함수 내 전역 변수 사용 규칙
- 단순히 읽기(Read)는 가능
- 함수 내부에서 전역 변수의 값을 변경(Write)하려면
global키워드를 사용해야 함 (예:global gx) global선언 없이 값을 할당하면 새로운 지역 변수가 생성됨
6. 순환 호출(Recursion)
- 정의: 함수가 자기 자신을 다시 호출하는 기법
- 특징: 복잡한 알고리즘을 단순하게 표현 가능 (예: 팩토리얼 계산, 프랙탈 그래픽 등)
- 주의: 종료 조건(Base case)이 없으면 무한 루프에 빠짐