🍚전공이 밥 먹여준다믄/🐍 파이썬

🐍 [기초] def 함수는 왜 써야 해? return은 왜 넣지?

code.with.siyeon 2025. 5. 15. 23:14

처음 def를 배웠을 때,
딱 이렇게 외웠던 기억이 난다.

def 함수이름(매개변수):
    실행할 코드
    return 결과값

“그냥 저렇게 쓰면 돼~”
“return 안 써도 되긴 하는데, 쓰면 뭔가 출력됨~”

🧠 그땐 솔직히… 함수는 ‘형식’처럼 느껴졌다.


🔹 진짜 궁금했던 건 이거였다 🤷‍♀️

❓ “굳이 저렇게 묶어서 써야 해?”
❓ “그냥 코드를 쓰면 안 되는 이유는 뭘까?”
❓ “return이 없으면 안 되는 건가?”

그 의문이 풀린 건,
내가 프로젝트에서 같은 코드를 복붙하다가 지치던 어느 날이었다.


🔹 반복되는 코드를 ‘한 번만’ 쓰고 싶었던 순간 ♻️

예를 들어, 사용자의 이름과 인사말을 출력하는 코드가
여기에도, 저기에도 자꾸 필요했던 상황:

print(f"{name}님, 환영합니다!")

매번 이걸 쓰는 게 너무 비효율적이라
처음으로 **‘함수로 묶는다는 것’**의 필요성을 느꼈다.

def greet(name):
    return f"{name}님, 환영합니다!"

print(greet("시연"))
print(greet("우석"))

👀 여기서 처음으로 return의 의미도 알게 됐다.

그냥 출력만 하는 게 아니라,
**“그 값을 돌려주니까 어디서든 재사용할 수 있다”**는 걸.


🔹 함수는 ‘코드를 정리하는 도구’ 그 이상이었다 🛠️

내가 느낀 함수의 힘은 이거였다:

  • 같은 로직을 반복하지 않게 한다
  • 코드를 더 읽기 쉽게 만든다
  • 어디서든 재사용 가능하게 만든다
  • 흐름을 명확하게 설계할 수 있게 한다

🔹 함수 안에서만 통하는 변수들이 있다는 것도 나중에야 알았다

처음엔 왜 name을 밖에서 쓰면 오류 나는지 이해 못했었다.

def hello():
    name = "시연"

print(name)  # 에러!

이때 알게 된 게 바로

함수 내부에서 정의된 변수는, 함수 바깥에선 쓸 수 없다는 개념.

이걸 **“지역 변수 (local variable)”**라고 부른다는 것도 그때 처음 알게 됐다.


✍️ 정리하자면…

  • def는 코드를 묶는 틀이자 논리 구조의 최소 단위
  • return은 결과를 돌려주는 통로이고,
    없어도 되지만 있어야 활용이 가능하다
  • 함수는 단순히 '한 번만 정의해서 여러 번 쓰는 구조' 그 이상으로,
    코드를 설계하고 정리하는 가장 기본적인 수단이다

지금도 함수가 어려울 때가 있지만,
그 구조 안에서 점점 내 코드를 다듬는 재미를 배우는 중이다.

📌 "코드를 줄이는 게 아니라, 흐름을 더 명확하게 만드는 것"
그게 내가 함수를 쓰는 이유다.


📘 다음 글 예고:
🐍 [기초] input과 print 진짜 이해하기 – 단순한 입출력에서 흐름이 시작된다