PythonPython 기초강의 10개 중 3번째난이도 입문

함수와 모듈 — 코드를 재사용 가능하게 만들기

발행 읽는 시간 약 1 분

  • Python
  • 함수
  • 모듈
  • def
  • import
  • 기초

강의 소개

def로 함수를 정의하고, 기본값·가변 인자·키워드 인자를 활용하는 방법을 배웁니다. 모듈 import와 자주 쓰는 표준 라이브러리도 익힙니다.

같은 코드를 반복 쓰고 있다면#

Python
# ❌ 반복되는 코드
print(f"안녕하세요, 철수님!")
print(f"안녕하세요, 영희님!")
print(f"안녕하세요, 민준님!")

# ✅ 함수로 묶기
def greet(name):
    print(f"안녕하세요, {name}님!")

greet("철수")
greet("영희")
greet("민준")

함수는 이름 붙인 코드 묶음입니다. 한 번 정의하고 여러 번 호출합니다.


함수 기본 구조#

Diagram · Mermaid
Python
def add(a, b):
    result = a + b
    return result

total = add(3, 5)
print(total)   # 8

return: 값 반환하기#

Python
def get_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    else:
        return "F"

grade = get_grade(85)
print(f"학점: {grade}")  # 학점: B

return을 만나면 함수가 즉시 종료되고 값을 반환합니다.


기본값 파라미터#

Python
def greet(name, greeting="안녕하세요"):
    print(f"{greeting}, {name}님!")

greet("철수")               # 안녕하세요, 철수님!
greet("영희", "반갑습니다")  # 반갑습니다, 영희님!

기본값이 있는 파라미터는 뒤쪽에 위치해야 합니다.


키워드 인자#

Python
def create_profile(name, age, job="미정"):
    return f"{name}({age}세), 직업: {job}"

# 순서 상관없이 이름으로 전달
print(create_profile(age=30, name="철수", job="개발자"))

여러 값 반환#

Python
def get_stats(numbers):
    minimum = min(numbers)
    maximum = max(numbers)
    average = sum(numbers) / len(numbers)
    return minimum, maximum, average   # 튜플로 반환

scores = [85, 92, 78, 96, 88]
low, high, avg = get_stats(scores)     # 언패킹
print(f"최소: {low}, 최대: {high}, 평균: {avg:.1f}")

가변 인자: *args, **kwargs#

Python
# *args: 위치 인자를 튜플로 받기
def sum_all(*numbers):
    total = 0
    for n in numbers:
        total += n
    return total

print(sum_all(1, 2, 3))         # 6
print(sum_all(1, 2, 3, 4, 5))   # 15

# **kwargs: 키워드 인자를 딕셔너리로 받기
def print_info(**info):
    for key, value in info.items():
        print(f"{key}: {value}")

print_info(name="철수", age=25, job="개발자")

타입 힌트 (Type Hints)#

Python
def add(a: int, b: int) -> int:
    return a + b

def greet(name: str) -> str:
    return f"안녕하세요, {name}님!"

def get_stats(numbers: list[float]) -> dict:
    return {"min": min(numbers), "max": max(numbers)}

실행에 영향은 없지만, 코드 가독성과 IDE 자동완성에 도움이 됩니다. LLM API 코드에서 많이 씁니다.


모듈: 다른 파일의 코드 가져오기#

Diagram · Mermaid
Python
# 모듈 전체 import
import math
print(math.pi)         # 3.14159...
print(math.sqrt(16))   # 4.0

# 특정 함수만 import
from math import sqrt, ceil
print(sqrt(25))        # 5.0
print(ceil(3.2))       # 4

# 별칭 사용
import os.path as osp
print(osp.exists("./README.md"))

자주 쓰는 표준 라이브러리#

Python
# random: 무작위
import random
print(random.randint(1, 100))        # 1~100 랜덤 정수
print(random.choice(["가", "나", "다"]))  # 랜덤 선택
random.shuffle([1, 2, 3, 4, 5])      # 리스트 섞기

# datetime: 날짜/시간
from datetime import datetime, timedelta
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M"))   # 2024-03-15 14:30
tomorrow = now + timedelta(days=1)

# os: 운영체제 관련
import os
print(os.getcwd())              # 현재 작업 디렉토리
os.makedirs("./output", exist_ok=True)  # 폴더 생성

# json: JSON 처리
import json
data = {"name": "철수", "age": 25}
json_str = json.dumps(data, ensure_ascii=False)  # dict → JSON 문자열
parsed = json.loads(json_str)   # JSON 문자열 → dict

내 모듈 만들기#

Python
# utils.py 파일 생성
def celsius_to_fahrenheit(c: float) -> float:
    return c * 9/5 + 32

def format_price(price: int) -> str:
    return f"{price:,}원"

GREETING = "안녕하세요"
Python
# main.py에서 사용
from utils import celsius_to_fahrenheit, format_price, GREETING

print(celsius_to_fahrenheit(100))   # 212.0
print(format_price(1234567))        # 1,234,567원
print(GREETING)                     # 안녕하세요

lambda: 간단한 익명 함수#

Python
# 일반 함수
def double(x):
    return x * 2

# lambda (한 줄 함수)
double = lambda x: x * 2
print(double(5))   # 10

# 주로 sorted, filter, map과 함께 사용
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_nums = sorted(numbers, key=lambda x: -x)   # 내림차순
print(sorted_nums)  # [9, 6, 5, 4, 3, 2, 1, 1]

정리#

개념문법용도
함수 정의def name(param):코드 재사용
반환값return value결과 전달
기본값def f(x, y=10):선택적 파라미터
가변 인자*args, **kwargs유연한 입력
타입 힌트def f(x: int) -> str:가독성 향상
importimport module외부 코드 사용

다음 편에서는 리스트와 딕셔너리 — 파이썬에서 가장 많이 쓰는 자료구조를 배웁니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.