728x90
이 글에서 다루는 개념
Python에서 **함수(Function)**는 코드의 재사용성을 높이고, 유지보수를 쉽게 해주는 중요한 개념입니다.
이번 글에서는 다음 개념을 다룹니다.
- 함수의 정의 및 호출 방법
- 함수의 매개변수 (인수)와 반환값
- 변수의 유효 범위(Scope) - Local, Global, Nonlocal
- 익명 함수(Lambda)와 활용 방법
1️⃣ 함수(Function) 기초
Python에서 함수는 def 키워드를 사용하여 정의합니다.
# 함수 정의
def greet(name):
return f"Hello, {name}!"
# 함수 호출
print(greet("Alice")) # Hello, Alice!
📌 함수의 기본 구조
- def 함수이름(매개변수): → 함수 선언
- return 값 → 함수 결과 반환 (없으면 None)
- 함수이름(인수) → 함수 호출
2️⃣ 함수의 매개변수와 반환값
🔹 위치 인수(Positional Arguments)
def add(a, b):
return a + b
print(add(3, 5)) # 8
🔹 기본값(Default Arguments)
def power(base, exponent=2):
return base ** exponent
print(power(3)) # 9 (3^2)
print(power(3, 3)) # 27 (3^3)
🔹 *가변 인수 (args)
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4, 5)) # 15
🔹 **키워드 인수 (kwargs)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="Seoul")
3️⃣ 변수의 유효 범위(Scope) - Local, Global, Nonlocal
🔹 지역 변수(Local Variable)
함수 내부에서 선언된 변수는 지역 변수이며, 함수 밖에서는 접근할 수 없습니다.
def my_function():
x = 10 # 지역 변수
print(x)
my_function()
# print(x) # 에러 발생 (함수 외부에서 접근 불가)
🔹 전역 변수(Global Variable)
함수 외부에서 선언된 변수는 전역 변수이며, 함수 내부에서도 접근할 수 있습니다.
x = 10 # 전역 변수
def my_function():
print(x) # 전역 변수 사용
my_function() # 10
📌 전역 변수 수정하려면 global 키워드 사용
x = 10
def modify_global():
global x
x = 20 # 전역 변수 변경
modify_global()
print(x) # 20
🔹 nonlocal 키워드 (중첩 함수에서 사용)
def outer():
x = "outer"
def inner():
nonlocal x
x = "inner"
inner()
print(x) # inner
outer()
4️⃣ Lambda 함수 (익명 함수)
Lambda 함수는 한 줄로 간단한 함수를 만들 때 사용됩니다.
# 일반 함수
def add(a, b):
return a + b
# Lambda 함수
add_lambda = lambda a, b: a + b
print(add_lambda(3, 5)) # 8
📌 Lambda 함수는 보통 map(), filter(), sorted() 등과 함께 사용됩니다.
nums = [1, 2, 3, 4, 5]
# map: 모든 요소에 2배 연산 적용
doubled = list(map(lambda x: x * 2, nums))
print(doubled) # [2, 4, 6, 8, 10]
# filter: 짝수만 남기기
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [2, 4]
📌 실전 문제: 함수와 스코프 연습하기
✅ 문제 1: 두 숫자의 합을 반환하는 함수 작성
📌 두 개의 정수를 입력받아 합을 반환하는 함수를 작성하세요.
# 🔽 여기에 코드 작성
def add(a, b):
return a + b
print(add(3, 5)) # 8
✅ 문제 2: 가변 인수를 사용해 여러 숫자의 합을 구하는 함수
📌 가변 인수 *args를 사용하여 여러 개의 숫자를 더하는 함수를 작성하세요.
# 🔽 여기에 코드 작성
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4, 5)) # 15
✅ 문제 3: 전역 변수 수정하기
📌 전역 변수 counter를 함수 내부에서 증가시키는 함수를 작성하세요.
counter = 0
def increment():
# 🔽 여기에 코드 작성
counter = 0
def increment():
global counter
counter += 1
increment()
print(counter) # 1
✅ 문제 4: Lambda 함수를 사용해 리스트 요소 변환하기
📌 리스트 [1, 2, 3, 4, 5]의 각 요소를 제곱하는 Lambda 함수를 작성하세요.
numbers = [1, 2, 3, 4, 5]
# 🔽 여기에 코드 작성
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # [1, 4, 9, 16, 25]
728x90
'Data Engineering > python' 카테고리의 다른 글
EP07 | Python 심화 개념 #1 | 이터레이터와 제너레이터 (0) | 2025.03.19 |
---|---|
EP06 | Python 클래스와 객체지향 프로그래밍 (OOP) (0) | 2025.03.19 |
EP04 | Python 자료구조 #2 | 딕셔너리와 집합 (0) | 2025.03.19 |
EP03 | Python 자료구조 #1 | 리스트와 튜플 (0) | 2025.03.19 |
EP02 | Python 제어문 (조건문, 반복문) (0) | 2025.03.19 |