728x90
728x90
1.함수의 기본
함수는 특정 작업을 수행하는 코드 블록입니다. Python에서는 def
키워드로 함수를 정의합니다.
def greet(name):
print(f"안녕하세요, {name}님!")
greet("철수") # 출력: 안녕하세요, 철수님!
2.매개변수(Parameters)와 인자(Arguments)
위치 인자
def add(a, b):
return a + b
result = add(3, 5) # result = 8
위치 인자는 "순서"가 중요해요. 마치 줄 서기 처럼요!
def make_burger(patty, vegetable, sauce):
print(f"{patty} 패티에 {vegetable}을 넣고 {sauce} 소스를 뿌립니다.")
# 순서대로 넣기
make_burger("불고기", "양상추", "마요네즈")
# 순서가 바뀌면 이상한 버거가 됩니다!
make_burger("마요네즈", "불고기", "양상추") # 엉망진창 버거가 되었네요
키워드 인자
def profile(name, age, city):
print(f"{name}님은 {city}에 사는 {age}살입니다.")
profile(age=25, city="서울", name="영희")
키워드 인자는 이름표를 붙이는 거예요. 순서가 바뀌어도 괜찮아요!
def order_pizza(size, topping, crust):
print(f"{size} 크기의 {topping} 피자를 {crust} 도우로 주문했습니다.")
# 이름표를 붙여서 순서 걱정 없이!
order_pizza(
topping="페퍼로니",
size="라지",
crust="씬"
) # 라지 크기의 페퍼로니 피자를 씬 도우로 주문했습니다.
기본값 매개변수
def greet(name, greeting="안녕하세요"):
print(f"{greeting}, {name}님!")
greet("민수") # 기본값 사용
greet("지영", "좋은 아침") # 기본값 오버라이드
3.반환값(Return)
def calculate_rectangle(width, height):
area = width * height
perimeter = 2 * (width + height)
return area, perimeter # 여러 값 반환
area, peri = calculate_rectangle(5, 3)
4.가변 인자(args, *kwargs)
가변 인자는 "몇 개가 들어올지 모르는" 인자를 처리할 수 있어요.
*args: 위치 인자 여러 개 받기
def sum_all(*numbers):
return sum(numbers)
print(sum_all(1, 2, 3, 4, 5)) # 15
def make_fruit_salad(*fruits):
print("과일 샐러드 재료:", end=" ")
for fruit in fruits:
print(fruit, end=" ")
# 재료를 원하는 만큼 넣을 수 있어요!
make_fruit_salad("사과") # 1개
make_fruit_salad("사과", "바나나", "키위") # 3개
make_fruit_salad("사과", "바나나", "키위", "망고", "파인애플") # 5개
**kwargs: 키워드 인자 여러 개 받기
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="Aaron", age=30, job="개발자")
def print_game_info(**player_scores):
print("🎮 게임 결과 🎮")
for player, score in player_scores.items():
print(f"{player}님: {score}점")
# 참가자 수에 상관없이 점수를 기록할 수 있어요!
print_game_info(철수=85, 영희=92)
print_game_info(철수=85, 영희=92, 민수=78, 지영=95)
5.람다 함수(Lambda)
⚠️ 이 글에서 사용되는 map(), filter() 함수는 아직 배우지 않은 내용입니다. 이후 챕터에서 자세히 다룰 예정이니 지금은 람다 함수의 개념 이해에만 집중해주세요!
람다 함수는 이름 없이 한 줄로 만드는 작은 함수입니다.
기본 문법
lambda 매개변수: 반환값
일반 함수와 비교
# 일반 함수
def square(x):
return x ** 2
# 람다 함수
square = lambda x: x ** 2
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
실용적인 예제
- 리스트 정렬
students = [
{"name": "영희", "score": 95},
{"name": "철수", "score": 87},
{"name": "민수", "score": 91}
]
# 점수로 정렬
sorted_students = sorted(students, key=lambda x: x["score"])
- map 함수와 함께 사용
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16, 25]
- filter 함수와 함께 사용
ages = [15, 18, 21, 17, 25, 16]
adults = list(filter(lambda x: x >= 18, ages)) # [18, 21, 25]
람다는 간단한 연산을 할 때 코드를 더 간결하게 만들어줍니다.
하지만 복잡한 로직에는 일반 함수를 사용하는 것이 좋습니다.
6.함수 스코프(Scope)
global_var = 10
def function():
local_var = 20
print(global_var) # 전역 변수 접근 가능
print(local_var) # 지역 변수
function()
print(global_var) # 가능
# print(local_var) # 오류! 지역 변수는 함수 밖에서 접근 불가
7.함수 활용 예제
계산기 프로그램
def calculator(num1, num2, operator):
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
return num1 / num2 if num2 != 0 else "0으로 나눌 수 없습니다"
print(calculator(10, 5, '+')) # 15
print(calculator(10, 5, '*')) # 50
정리
- 함수는 코드 재사용성과 모듈화의 기본
- 매개변수와 반환값으로 유연한 함수 설계 가능
- 다양한 인자 전달 방식 지원
- 스코프를 통한 변수 관리
- 람다로 간단한 익명 함수 생성 가능
💡 다음 장에서는 Python의 컬렉션(리스트, 튜플, 세트, 딕셔너리)에 대해 알아보겠습니다.
728x90
300x250
'Python' 카테고리의 다른 글
Python 기초 6장 - 객체지향 프로그래밍(OOP) (0) | 2024.12.02 |
---|---|
Python 기초 5장 - 컬렉션(Collections) 완벽 가이드 (1) | 2024.11.28 |
Python PEMDAS-LR - 파이썬 연산자 우선순위와 계산 방향 이해하기 (0) | 2024.11.27 |
Python 기초 3장 - 연습문제 답안 (0) | 2024.11.27 |
Python 기초 3장 - 제어문 완벽 가이드 (0) | 2024.11.26 |