안녕하세요! 오늘은 파이썬 프로그래밍의 핵심 중의 핵심이라고 할 수 있는 함수와 모듈에 대해 자세히 알아보는 시간을 가져보려고 합니다. 마치 레고 블록처럼, 함수와 모듈은 여러분의 코드를 더욱 체계적이고 효율적으로 만들어주는 마법 도구랍니다! ✨
이번 시간에는 함수에 대한 기본적인 개념부터 다양한 활용법, 그리고 변수의 범위인 스코프까지 꼼꼼하게 파헤쳐 볼 예정이니, 파이썬 초보자분들도 걱정 말고 함께 출발해 볼까요? 😉
1️⃣ 함수 (1): 정의와 호출 - 코드 재사용의 마법! 🧙♀️
함수 개념 및 장점
함수란 특정 작업을 수행하는 코드 묶음이라고 생각하시면 돼요. 마치 요리 레시피처럼, 정해진 입력(재료)을 받아서 정해진 작업(요리 과정)을 거쳐 결과(음식)를 만들어내는 것이죠!
함수를 사용하는 가장 큰 장점은 바로 코드 재사용성입니다. 똑같은 코드를 여러 번 반복해서 작성할 필요 없이, 함수를 한 번만 만들어두면 필요할 때마다 간편하게 불러서 사용할 수 있어요. 얼마나 편리한가요? 😎
뿐만 아니라, 코드를 논리적인 단위로 묶어서 관리하기 때문에 코드의 가독성을 높이고, 오류 발생 시 디버깅을 쉽게 해주는 효과도 있답니다. 마치 잘 정리된 서랍장처럼, 코드를 깔끔하게 관리할 수 있게 되는 거죠! 🗄️
함수 정의 (def) 및 호출
파이썬에서 함수를 정의할 때는 def 키워드를 사용합니다. 기본적인 함수 정의 문법은 다음과 같아요.
def 함수이름(매개변수):
# 함수가 수행할 코드
return 반환값
- def: 함수를 정의할 때 사용하는 키워드
- 함수이름: 함수를 호출할 때 사용할 이름 (규칙에 맞춰서 자유롭게 지정 가능)
- 매개변수: 함수를 호출할 때 전달되는 값을 받는 변수 (선택 사항)
- # 함수가 수행할 코드: 실제 함수가 실행될 명령들
- return: 함수의 실행 결과를 반환하는 키워드 (선택 사항)
정의된 함수를 사용하려면 함수 이름 뒤에 괄호 ()를 붙여서 호출하면 됩니다.
def greet(name):
print(f"안녕하세요, {name}님!")
greet("철수") # 출력: 안녕하세요, 철수님!
greet("영희") # 출력: 안녕하세요, 영희님!
위 예시처럼 greet이라는 함수를 정의하고, 괄호 안에 "철수"와 "영희"라는 값을 넣어서 각각 호출했습니다. 함수는 전달받은 이름에 맞춰서 인사말을 출력해주죠? 참 쉽죠! 😊
매개변수 (parameter)와 인자 (argument)
함수를 정의할 때 괄호 안에 적는 변수를 매개변수 (parameter) 라고 부릅니다. 마치 함수의 입력 통로 역할을 하는 것이죠.
그리고 함수를 호출할 때 실제로 전달하는 값을 인자 (argument) 라고 합니다. 매개변수를 통해 함수 내부로 전달되는 실질적인 값이라고 생각하시면 돼요.
위 greet 함수 예시에서 name은 매개변수이고, "철수"와 "영희"는 인자에 해당합니다. 헷갈리지 않도록 주의하세요! 🧐
2️⃣ 함수 (2): 다양한 형태 - 내 입맛대로 골라 쓰는 재미! 😋
파이썬 함수는 다양한 형태로 정의하고 호출할 수 있어서 더욱 강력하고 유연하게 코드를 작성할 수 있도록 도와줍니다.
위치, 키워드, 기본 인자
- 위치 인자 (Positional Arguments): 함수 호출 시 인자의 순서대로 매개변수에 값이 할당되는 방식입니다. 우리가 앞에서 봤던 greet("철수")처럼 순서가 중요해요!
- 키워드 인자 (Keyword Arguments): 함수 호출 시 인자의 이름과 함께 값을 명시하는 방식입니다. 순서에 상관없이 매개변수 이름에 맞춰서 값이 전달되기 때문에 가독성이 높아집니다. 예를 들어 greet(name="영희")와 같이 사용할 수 있습니다.
- 기본 인자 (Default Arguments): 함수 정의 시 매개변수에 기본값을 지정해두는 방식입니다. 함수를 호출할 때 해당 인자를 생략하면 자동으로 기본값이 사용됩니다.
def power(base, exponent=2): # exponent의 기본값은 2
return base ** exponent
print(power(3)) # 출력: 9 (exponent는 기본값 2 사용)
print(power(3, 3)) # 출력: 27 (exponent에 3 전달)
print(power(base=5)) # 출력: 25 (키워드 인자 사용)
가변 인자 (*args, **kwargs)
때로는 함수에 전달될 인자의 개수가 정해져 있지 않을 수도 있습니다. 이럴 때 유용하게 사용할 수 있는 것이 바로 가변 인자입니다.
- *args: 여러 개의 위치 인자를 튜플 형태로 받습니다. 함수 정의 시 매개변수 앞에 *를 붙여서 사용합니다.
- **kwargs: 여러 개의 키워드 인자를 딕셔너리 형태로 받습니다. 함수 정의 시 매개변수 앞에 **를 붙여서 사용합니다.
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 출력: 6
print(sum_all(10, 20, 30, 40)) # 출력: 100
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="Seoul")
# 출력:
# name: Alice
# age: 30
# city: Seoul
반환 값 (return)
함수가 작업을 완료하고 결과를 외부로 전달하고 싶을 때 return 키워드를 사용합니다. return 문을 만나면 함수의 실행이 즉시 종료되고, 지정된 값이 함수의 결과로 반환됩니다. 만약 return 문이 없거나 return 뒤에 아무 값도 지정하지 않으면 None이 반환됩니다.
def multiply(a, b):
return a * b
result = multiply(5, 4)
print(result) # 출력: 20
3️⃣ 함수 (3): 스코프 (Scope) - 변수의 활동 영역! 🗺️
**스코프 (Scope)**는 변수가 유효한 범위, 즉 해당 변수에 접근할 수 있는 영역을 의미합니다. 파이썬에서는 변수가 어디에서 정의되었는지에 따라 스코프가 결정됩니다.
지역 및 전역 변수
- 지역 변수 (Local Variable): 함수 내부에서 정의된 변수는 그 함수 내부에서만 접근할 수 있습니다. 함수가 종료되면 지역 변수는 사라집니다. 마치 방 안에서만 사용할 수 있는 물건과 같아요. 🚪
- 전역 변수 (Global Variable): 함수 외부, 즉 프로그램의 최상위 레벨에서 정의된 변수는 프로그램 전체에서 접근할 수 있습니다. 마치 집 전체에서 사용할 수 있는 물건과 같죠. 🏠
global_var = 10 # 전역 변수
def my_function():
local_var = 5 # 지역 변수
print(f"함수 내부: global_var = {global_var}, local_var = {local_var}")
my_function()
print(f"함수 외부: global_var = {global_var}")
# print(f"함수 외부: local_var = {local_var}") # 오류 발생!
스코프 규칙 (LEGB)
파이썬에서 변수를 찾을 때 다음과 같은 순서로 검색합니다. 이를 LEGB 규칙이라고 합니다.
- L (Local): 현재 함수 내부
- E (Enclosing function locals): 둘러싸고 있는 함수의 내부 (중첩 함수에서)
- G (Global): 함수 외부, 전역 스코프
- B (Built-in): 파이썬 내장 함수 및 상수
global, nonlocal 키워드
함수 내부에서 전역 변수의 값을 수정하고 싶을 때는 global 키워드를 사용합니다.
count = 0
def increment():
global count
count += 1
increment()
print(count) # 출력: 1
중첩 함수 내부에서 외부 함수의 지역 변수를 수정하고 싶을 때는 nonlocal 키워드를 사용합니다.
def outer():
x = 10
def inner():
nonlocal x
x += 5
print(f"inner 함수 내부: x = {x}")
inner()
print(f"outer 함수 내부: x = {x}")
outer()
# 출력:
# inner 함수 내부: x = 15
# outer 함수 내부: x = 15
🎉 마무리하며
오늘은 파이썬 함수의 기본적인 정의와 호출 방법부터 시작해서 다양한 형태의 인자, 반환 값, 그리고 변수의 스코프까지 아주 자세하게 알아보았습니다. 어떠셨나요? 이제 함수에 대한 자신감이 조금 더 생기셨나요? 💪
'Python' 카테고리의 다른 글
[Python]파이썬, 효율적인 코딩: 모듈 🧩 (2) | 2025.03.28 |
---|---|
[Python]파이썬 람다(Lambda) 함수✨ (6) | 2025.03.27 |
[Python]파이썬 자료구조 완전 정복! 리스트, 튜플, 딕셔너리, 집합까지 한 번에 끝내자!🧱 (4) | 2025.03.25 |
[Python]파이썬 제어문: 조건문과 반복문 (5) | 2025.03.25 |
[Python]파이썬 연산자의 모든 것🐍✨ (7) | 2025.03.24 |