함수는 프로그래밍에서 매우 중요한 개념
동일한 기능을 여러 번 사용할 경우, 함수를 사용하면 중복을 줄이고 유지보수를 쉽게 할 수 있음
함수를 사용하면 코드의 구조가 명확해지고, 각 부분이 어떤 역할을 하는지 쉽게 이해 가능
함수를 사용하면 특정 기능을 수정할 때 한 곳만 수정하면 되므로, 버그를 줄이고 유지보수가 편리해짐
def 함수이름(매개변수1, 매개변수2, ...):
"""문서화 문자열 (함수 설명)"""
실행할 코드
return 반환값
def 키워드를 사용하여 함수 정의()를 사용하며, 필요한 경우 매개변수를 전달할 수 있음return 문을 사용하여 결과값을 반환할 수 있으며, 반환값이 없을 수도 있음💡 참고: 오라클의 sum 함수도 return 절이 있기 때문에 항상 결과를 리턴해줌
SELECT SUM(sal)
FROM emp
WHERE 1 = 2;
a = int(input('숫자를 입력하세요 ~ '))
if a % 2 == 0:
print('짝수 입니다.')
else:
print('홀수 입니다.')
def check_odd_even(x):
if x % 2 == 0:
print('짝수 입니다.')
else:
print('홀수 입니다.')
check_odd_even(2) # 짝수 입니다.
숫자를 물어보게 하고 숫자를 입력하면 해당 숫자가 양수인지 음수인지 출력되게 하시오
def check_plus_minus():
num = int(input('숫자를 입력하세요 ~ '))
if num > 0:
print('양수입니다.')
elif num < 0:
print('음수입니다.')
else:
print('0 입니다.')
check_plus_minus()
숫자를 입력해서 함수를 실행하면 짝수인지 홀수인지가 출력되는 함수를 생성하시오
ㄴ 예제1과 같음
return사용
def check_odd_even(num):
if num % 2 == 0:
return '짝수 입니다' # 함수의 결과를 변수에 저장하고 싶을 때 return 사용
else:
return '홀수 입니다'
result = check_odd_even(7) # 함수의 결과를 변수에 저장
print(result)
# 짝수와 홀수를 판정하는 함수
def check_odd_even(num):
if num % 2 == 0:
return '짝수'
else:
return '홀수'
# 숫자를 여러개 받아서 짝수와 홀수를 판정하는 함수
def process_numbers(num_list):
for num in num_list:
result = check_odd_even(num)
print(num, '은 ', result, '입니다')
process_numbers([1,2,3,4,5])
# 1 은 홀수 입니다
# 2 은 짝수 입니다
# 3 은 홀수 입니다
# 4 은 짝수 입니다
# 5 은 홀수 입니다
plus_minus_numbers 라는 함수를 만드는데
여러 개의 숫자들을 받아서 양수인지 음수인지 0인지를 출력
def check_plus_minus(num):
if num > 0:
return '양수'
elif num < 0:
return '음수'
else:
return 0
def plus_minus_numbers(num_list):
for num in num_list:
result = check_plus_minus(num)
print(num, '은 ', result, '입니다')
plus_minus_numbers([-4, 7, -2, 0, 5])
# 결과:
# -4는 음수입니다.
# 7은 양수입니다.
# -2는 음수입니다.
# 0는 0입니다.
# 5는 양수입니다.
다음의 결과를 실행하는 함수를 생성하시오
def compare_numbers(num1, num2):
if num1 > num2:
return '첫번째 숫자가 더 큽니다.'
elif num1 < num2:
return '두번째 숫자가 더 큽니다'
else:
return '두 숫자는 같습니다'
result = compare_numbers(2, 7)
print(result)
학생 성적의 평균을 계산하는 함수를 구현하세요
def calculate_average(num_list):
total = sum(num_list)
avg = total / len(num_list)
return avg
# 학생들의 점수 리스트
student1_scores = [85, 90, 78]
student2_scores = [65, 70, 58]
student3_scores = [92, 88, 95, 91]
# 각 학생들의 평균 계산
student1_avg = calculate_average(student1_scores)
student2_avg = calculate_average(student2_scores)
student3_avg = calculate_average(student3_scores)
# 결과 출력
print(f"학생1의 평균: {round(student1_avg, 1)}") # 학생1의 평균: 84.3
print(f"학생2의 평균: {round(student2_avg, 1)}") # 학생2의 평균: 64.3
print(f"학생3의 평균: {student3_avg}") # 학생3의 평균: 91.5
num1 = 3
num2 = 5
num3 = 7
square1 = num1 ** 2
square2 = num2 ** 2
square3 = num3 ** 2
print(square1) # 9
print(square2) # 25
print(square3) # 49
def square(num):
return num ** 2
print(square(3))
print(square(5))
print(square(7))
length1 = 5
width1 = 10
area1 = length1 * width1
print(f"첫번째 직사각형의 넓이: {area1}")
length2 = 8
width2 = 11
area2 = length2 * width2
print(f"두번째 직사각형의 넓이: {area2}")
def rectangle(x, y):
return x * y
print('첫번째 직사각형의 넓이: ', rectangle(5, 10))
print('두번째 직사각형의 넓이: ', rectangle(8, 11))
radius1 = 4
circle_area1 = 3.14 * radius1 * radius1
print(f"첫번째 원의 넓이: {circle_area1}")
radius2 = 7
circle_area2 = 3.14 * radius2 * radius2
print(f"두번째 원의 넓이: {circle_area2}")
# ... 이런 코드가 100개가 있다면?
위와 같은 코드가 100개 있으면 π(3.14)를 수정할 때 하나하나 찾아서 전부 수정해줘야 함
def circle_area(r):
return 3.14 * r * r
print('첫번째 원의 넓이: ', circle_area(4))
print('두번째 원의 넓이: ', circle_area(7))
다음 요구사항에 맞게 함수를 구현하세요
circle_areacircle_circumferencedef circle_area(num):
return num * num * 3.1415
def circle_circumference(num):
return 2 * 3.1415 * num
print("반지름이 5인 원")
print(f"넓이: {circle_area(5)}") # 넓이: 78.5375
print(f"둘레: {circle_circumference(5)}") # 둘레: 31.415
print("반지름이 7.5인 원")
print(f"넓이: {circle_area(7.5)}") # 넓이: 176.71875
print(f"둘레: {circle_circumference(7.5)}") # 둘레: 47.1225
3.14 -> 3.14159265359로 변경된다면
원과 관련된 계산을 하는 함수들을 모두 찾아서 변경 해줘야 하는 불편함이 생겨 유지보수 어려워짐
그래서 다음과 같이 "전역변수"를 사용해야 함
# 전역변수 설정
pi = 3.1415 # 나중에 원주율이 변경될 일이 생기면 여기서 변경해주면 됨
def circle_area(num):
return num * num * pi
def circle_circumference(num):
return 2 * pi * num
print("반지름이 5인 원")
print(f"넓이: {circle_area(5)}") # 넓이: 78.5375
print(f"둘레: {circle_circumference(5)}") # 둘레: 31.415
print("반지름이 7.5인 원")
print(f"넓이: {circle_area(7.5)}") # 넓이: 176.71875
print(f"둘레: {circle_circumference(7.5)}") # 둘레: 47.1225
이제 π 값 변경하고 싶을 때
전역변수 pi 값만 변경하면 모든 함수에 자동 반영됨
코드의 재사용성: 동일한 코드를 반복 작성할 필요 없음코드의 가독성: 코드 구조가 명확해지고 이해하기 쉬움유지보수의 용이성: 한 곳만 수정하면 모든 곳에 반영매개변수: 함수에 전달할 값이 있는지 확인반환값: 함수의 결과를 다른 곳에서 사용할지 확인전역변수: 여러 함수에서 공통으로 사용하는 값이 있는지 확인