1) 학습 요약표
항목 | 설명 |
함수 정의 | def + 함수명 + 괄호 + 콜론으로 정의 |
매개변수/인자 | 함수 정의 시 매개변수, 호출 시 인자 전달 |
반환값 | return 키워드로 반환, 여러 값은 튜플 형태 |
*args | 위치 인자를 튜플로 처리 |
**kwargs | 키워드 인자를 딕셔너리로 처리 |
전역/지역 변수 | 함수 외부는 전역, 내부는 지역. 수정 시 global 필요 |
함수 종료 | return은 함수 종료 및 값 반환 |
2) 이론 학습
1. 함수란?
- 함수를 사용하면 같은 작업을 반복해서 작성할 필요가 없습니다.
- 마치 자판기처럼, 입력(동전)을 넣으면 출력(음료)이 나오는 구조입니다.
- def 키워드로 정의하고, return으로 값을 돌려줄 수 있습니다.
# 숫자 3을 더하는 함수 예제
def plus(num):
return num + 3
result = plus(5)
print(result) # 출력: 8
2. 함수 정의와 호출 구조
함수는 def 키워드로 시작하고, 이름과 괄호, 콜론으로 구성됩니다. 호출 시에는 함수이름() 형식으로 실행합니다.
- 함수 이름은 의미 있게 작성해야 합니다.
- 괄호 안에는 입력값(매개변수)을 받을 수 있으며, 필요 없을 경우 비워도 됩니다.
# 인사말 출력 함수
def say_hello(name):
return f"안녕하세요, {name}님!"
print(say_hello("지민"))
3. 매개변수와 인자
매개변수(parameter): 함수 정의 시 사용하는 변수
인자(argument): 함수 호출 시 전달하는 값
- 매개변수는 함수 내부에서 사용할 변수입니다.
- 인자는 실제로 함수에 전달하는 값입니다.
- 인자의 개수는 매개변수와 일치해야 합니다.
# 제곱을 반환하는 함수
def square(num):
return num ** 2
print(square(5)) # 출력: 25
4. print()와 return의 차이
- print()는 단순히 결과를 화면에 출력하지만 값을 반환하지 않습니다.
- return은 계산된 값을 함수 외부로 반환하여 이후 다른 연산에도 사용할 수 있습니다.
# print() 사용
def show_total(a, b):
print(a + b)
res = show_total(3, 4)
print("반환값:", res) # 출력: 반환값: None
# return 사용
def get_total(a, b):
return a + b
res = get_total(3, 4)
print("반환값:", res) # 출력: 반환값: 7
5. 함수 사용 형태 (입출력 유무)
함수는 매개변수와 반환값의 유무에 따라 4가지 형태로 나뉩니다.
# 1. 매개변수 X, 반환값 X
def guide():
print("두 정수를 입력받아 곱한 결과를 출력하는 프로그램입니다.")
# 2. 매개변수 X, 반환값 O
def inputnums():
a = int(input("첫번째 정수를 입력하세요:"))
b = int(input("두번째 정수를 입력하세요:"))
return a, b
# 3. 매개변수 O, 반환값 O
def multi(num1, num2):
return num1 * num2
# 4. 매개변수 O, 반환값 X
def printResult(result):
print("두 수의 곱셈 결과는 %d입니다." % result)
# 실행 흐름
guide()
n1, n2 = inputnums()
res = multi(n1, n2)
printResult(res)
6. 다양한 인자 사용 방법
기본값 인자, 키워드 인자
- 기본값 인자를 사용하면 입력이 생략되었을 때 기본값을 사용할 수 있습니다.
- 키워드 인자는 매개변수의 순서를 바꿔도 명시적으로 연결됩니다.
# 기본값 인자
def greet(name="사용자"):
print(f"안녕하세요, {name}님!")
greet("유진")
greet()
# 키워드 인자
def info(name, age):
print(f"{name}님은 {age}세입니다.")
info("영수", 30)
info(age=27, name="은정")
7. 가변 인자 (*args)
- 인자의 개수가 유동적인 경우 *args를 사용합니다.
- 전달된 인자들은 튜플 형태로 처리됩니다.
# 여러 개의 값을 더하는 함수
def add_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(add_all(1, 2, 3)) # 6
print(add_all(10, 20, 30, 5)) # 65
8. 키워드 가변 인자 (**kwargs)
- 이름이 붙은 인자들을 딕셔너리로 받아 처리합니다.
- key=value 형식으로 넘깁니다.
# 딕셔너리 형태로 키-값 쌍을 받아 처리
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="혜진", age=29, job="개발자")
9. 일반 인자 + *args + **kwargs 혼합 사용
- 이 조합은 함수가 다양한 형태의 인자를 받을 수 있게 합니다.
# 세 가지 형태 혼합
def demo_function(x, *args, **kwargs):
print("일반 인자:", x)
print("가변 위치 인자:", args)
print("가변 키워드 인자:", kwargs)
demo_function(100, 1, 2, 3, name="철수", age=25)
#함수 매개변수 순서 규칙 (공식 문서 기준, PEP 3102 등):
파이썬 함수에서 인자(parameter)는 다음 순서대로만 정의 가능.
- 일반 위치 인자 (예: x)
- 가변 위치 인자 (*args)
- 키워드 전용 인자 (*, a=1) → 생략 가능
- 가변 키워드 인자 (**kwargs)
이 순서를 지키지 않으면 SyntaxError가 발생.
10. 반환값과 자료형
- 여러 값을 return하면 튜플로 반환됩니다.
- 리스트나 딕셔너리로도 묶어서 반환할 수 있습니다.
# 여러 값을 반환 → 튜플 형태
def calculator(a, b):
return a + b, a - b, a * b, a / b
reslist = calculator(10, 2)
print(reslist, type(reslist))
11. return은 함수 종료 역할도 함
- return은 값을 반환함과 동시에 함수 실행을 종료시킵니다.
- 조건문 등과 함께 조기 종료에 사용됩니다.
# 0으로 나누는 경우 함수 조기 종료
def division(a, b):
if b == 0:
return
return a / b
print(division(10, 3)) # 3.33...
print(division(10, 0)) # None
12. 전역변수와 지역변수
- 함수 내에서 만든 변수는 지역변수이며, 함수 바깥에서는 접근할 수 없습니다.
- 전역변수는 프로그램 전체에서 접근 가능합니다.
num = 3 # 전역 변수 num 선언
def plusThree(num):
num += 3
print("함수 내 num:", num)
plusThree(num)
print("전역 num:", num)
# 리스트 수정 예제
globallist = []
def appendValue():
globallist.append(100)
appendValue()
print(globallist)
13. 전역변수 수정 (global 키워드)
- 함수 안에서 전역변수를 수정하려면 global 키워드를 사용해야 합니다.
- 다만, 가능한 한 전역변수 수정은 피하고, 함수는 인자와 반환값만 사용하여 처리하는 것이 좋습니다.
num = 1
def plusNum():
global num
num += 1
plusNum()
print(num)
3) 종합 문제
1. 섭씨 → 화씨 변환 함수
문제 설명 : 섭씨 온도를 입력받아 화씨(Fahrenheit)로 변환하여 반환하는 함수를 작성하세요.
수식은 다음과 같습니다:
Fahrenheit = Celsius × 1.8 + 32

2. 과목 점수 평균 및 등급 계산
문제 설명 : 여러 과목 점수를 *args로 입력받아 평균을 구하고, 평균 점수에 따라 등급(A, B, C, F)을 반환하세요.
등급 기준
- 90점 이상: A
- 80점 이상: B
- 70점 이상: C
- 그 외: F
3. 회원 정보 딕셔너리 출력
문제 설명 : 이름, 나이, 연락처 등의 정보를 **kwargs로 입력받아, key: value 형식으로 한 줄씩 출력하세요.
4. 문장 단어 수 세기
문제 설명 : 문장을 문자열로 입력받아, 공백 기준으로 단어를 나누고 단어 개수와 단어 리스트를 튜플로 반환하세요.
5. 계산기 함수 만들기
문제 설명 : 두 개의 숫자와 연산 기호(+, -, *, /)를 받아 계산을 수행하세요. 0으로 나눌 경우 에러 메시지를 반환하세요.
'파이썬 > 기초 학습' 카테고리의 다른 글
Day 9: 모듈 & 외부 라이브러리 (2) | 2025.08.05 |
---|---|
Day 8: 파일 입출력 (File I/O) 추가학습 (1) | 2025.08.03 |
Day 6: 조건문 & 반복문 추가학습 (2) | 2025.08.01 |
Day 5: 반복문(while,for) 추가 학습 (3) | 2025.07.30 |
Day 4: List,Dictionary,Set,Tuple 추가 학습 (2) | 2025.07.26 |