6. Python Programming Course : Functions
6. Functions
함수는 입력값에 따라 출력값이 변합니다. 즉, 입력값을 넣으면 어떤 일을 수행한 후 결과을 내어놓게 됩니다.
Python에서 코드를 작성하다 보면 반복되는 부분이 생길 때가 있습니다. 이럴 때 기존의 코드를 복사 붙여 넣기 하는 것도 가능하지만, 함수를 이용한다면 더 편리해집니다.
반복되는 부분들을 함수로 만든다면, 반복되는 부분(데이터 처리 로직, 파일 입출력 등의 반복되는 흐름)에 미리 정의한 함수를 사용해 코드의 가독성을 높이고, 전반적인 코드의 흐름을 잘 알 수 있게 되며 오류 발견도 쉬워질 수 있습니다.
이 장에서는 이러한 함수를 정의하고, 인자를 전달하며, 값을 반환하고, 변수 범위를 이해하고, 간단한 람다 함수를 사용하는 법까지 단계별로 배워봅니다.
6.1 Defining Functions (함수 정의)
기본 구조
def키워드로 시작하고, 함수 이름을 적습니다.- 함수 이름 뒤에 괄호()와 콜론
:를 붙여 정의합니다. - 함수 본문은 들여쓰기(4칸)로 구분합니다.
매개변수 포함 함수
- 함수의 기본 구조에서 ()안에 매개변수(Parameter)를 추가한 형태입니다.
- 매개변수는 함수에 입력으로 전달된 값을 받는 변수입니다.
- name 자리에 Alice가 들어가 "Hello, Alice!"가 출력됨
6.2 Function Arguments (함수 인자)
인자(Arguments)란?
- 함수를 호출할 때 괄호 안에 넣어 주는 실제 값
사용이유
- 코드 재사용성 증가
- 함수 안에 값을 직접 넣으면 같은 로직을 다른 값으로 돌릴 때마다 코드를 복붙하거나 수정해야 하는데, 인자를 사용하면 함수만 정의해두고, 필요할 때마다 다른 인자만 넣어 호출 가능합니다.
2. 다양한 상황에 사용 가능 (유연성 증가)
- 어떤 값이 들어올지 미리 알 수 없을 때, 인자를 통해 외부에서 값을 주입하면 함수가 다양한 상황 대처 가능합니다.
3. 의도 명확 ➡️ 가독성 증가, 유지보수 용이
- 매개변수 이름을 잘 짓는다면 이름만 보고도 함수의 역할과 입력값의 의미를 바로 알 수 있어 코드 흐름을 예측하기 쉽고 코드의 수정과 확장이 훨씬 수월해집니다.
1. 기본 인자
- 함수 정의 시 매개변수에 기본값을 미리 설정해 두는 기법입니다.
- 호출할 때 해당 인자를 생략하면, 미리 정해 둔 기본값을 사용합니다.
2. 키워드 인자
- 함수를 호출할 때 단순히 위치만으로 전달하는 대신에 매개변수 = 값 형태로 넘겨주는 방식입니다.
3. 가변 인자 (*args, **kwargs)
- 함수를 정의할 때 매개변수 앞에
*혹은**를 붙이면, 호출부에서 몇 개가 들어올지 모르는 위치 인자나 키워드 인자를 한 번에 모아 받을 수 있습니다.
*args (튜플로 모으기)
- 여러 개의 위치 인자를 튜플(tuple) 형태로 한 번에 담아줍니다.
- 인자의 개수가 정해져 있지 않거나, 임의 개수의 값을 처리할 때 유용합니다.
**kwargs (딕셔너리로 모으기)
- 여러 개의 키워드 인자를 딕셔너리(dict) 형태로 한 번에 담습니다.
- 옵션 또는 설정값이 많을 때 주로 사용합니다.
6.3 Return Values (반환값)
1. return 문
return을 만나면 함수가 즉시 종료되고뒤에 오는 표현식(값)이 호출부로 돌아갑니다.
result = square(4)처럼, 반환값을 변수에 담아 다른 부분에서도 활용 가능
2. 여러 값 반환
return a, b, c식으로 여러 값을 나열하면, 파이썬이 자동으로(a, b, c)튜플로 묶어서 반환합니다.- 호출부에서
low, high, total = get_stats(...)처럼 한 번에 꺼내 쓸 수 있습니다.
6.4 Scope of Variables (변수의 범위)
1. 전역 변수(Global Variable)
- 함수 밖에서 선언된 변수로, 모듈 전체(함수 안팎)에서 접근합니다.
2. 지역 변수 (Local Variable)
- 함수 내부에서 선언된 변수로, 선언된 함수 안에서만 사용 가능합니다.
함수 안에서 전역변수와 같은 이름의 지역 변수를 정의하면, 전역 변수와는 별개로 취급합니다.
global 키워드
- 함수 안에서 전역 변수를 수정하려면,
global키워드로 해당 변수가 전역임을 명시합니다.
6.5 Lambda Functions (람다 함수)
- 이름 없는 한 줄짜리 함수로, 보통 한 번만 사용할 간단한 로직에 사용합니다.
lambda키워드 뒤에 매개변수와:그리고 반환할 표현식을 바로 작성합니다.- 반환값을 명시하는
return이 없습니다.
간단한 익명 함수 만들기
람다 함수와 sorted 예시
- 리스트를 정렬할 때, 람다 함수를 이용해 한 줄로 정의하면 코드가 간결해집니다.
실습문제
1. annual_salary(연봉)과 months_worked(근무 개월 수)를 입력받아 연봉을 months_worked개월로 나누어 월급을 계산하고, 1원 미만은 버리는 calc_monthly_salary 함수를 정의해보세요.
예) calc_monthly_salary(48000000, 10) # 결과: 4800000
2. 정수들이 담긴 리스트 nums를 입력받아,
람다와 filter()를 활용해 짝수만 걸러낸 새로운 리스트를
반환하는 함수를 작성하세요.
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
출력 예시: print(filter_even(nums))
실제 출력 값: [2, 4, 6, 8, 10]
함수는 코드를 효율적으로 관리하고 재사용하는 핵심 수단입니다. 다양한 방식으로 정의하고 활용하며, 람다 함수를 통해 짧고 유연한 코드를 작성하는 연습도 해보세요!
global 키워드는 함수안에서 지역변수를 전역변수로 설정하는데 이러면 전역변수로 설정한 것도 같은 값이 있으면 그 전체에 영향을 미치게 될거 같은데 언제 사용 하는지 궁금합니다
답글삭제