파이썬 def 사용법, 매개변수 인수 차이, return 반환값, 코드 재사용, 함수 호출
조건문과 반복문까지 배우고 나면 이제 내가 원하는 로직을 거의 다 구현할 수 있는 실력이 됩니다. 하지만 프로그램이 커지고 코드가 수백 줄로 길어지다 보면 한 가지 문제에 봉착합니다. 앞선 가계부 양식에서 썼던 '천 단위 쉼표를 찍고 원화를 붙이는 코드'나 '복잡한 할인율 계산 공식' 같은 똑같은 코드가 프로그램 여기저기서 수십 번씩 중복되어 나타나는 현상입니다.
만약 그 복잡한 공식에 오타가 있거나 수정해야 한다면, 복사 붙여넣기 했던 수십 군데의 코드를 일일이 찾아가 고쳐야 하는 끔찍한 상황이 벌어집니다. 이때 필요한 것이 바로 자주 쓰는 코드 뭉치들을 하나의 예쁜 상자 안에 담아 이름표를 붙여두는 '함수(Function)'입니다.
저 역시 초보 시절, 함수를 쓰지 않고 긴 코드를 짜다가 조그만 계산 공식을 수정하느라 하루 종일 Ctrl + F(찾기/바꾸기)를 누르며 고생한 적이 있습니다. 나중에 코드들을 함수로 깔끔하게 쪼개어 정리(리팩토링)하고 나서야, 단 한 줄의 수정만으로 프로그램 전체가 바뀌는 함수의 위대함을 깨달았습니다. 오늘은 나만의 커스텀 명령어를 만드는 함수의 정의와 호출 원리를 마스터해 보겠습니다.
1. 함수의 핵심 구조: 마법의 믹서기 만들기
프로그래밍에서 함수는 "재료(입력)를 넣으면, 정해진 규칙대로 위이잉 갈아서, 결과물(출력)을 짜잔 내뱉는 마법의 믹서기"와 같습니다.
파이썬에서 나만의 함수(믹서기)를 설계할 때는 '정의하다'라는 뜻의 영어 단어 'Define'에서 따온 def 명령어를 사용합니다.
def welcome(name):
print(f"안녕하세요, {name}님! 파이썬의 세계에 오신 것을 환영합니다.")
def welcome(name):: 지금부터welcome이라는 이름의 함수를 만들 테니 기억하라는 뜻입니다. 괄호 안의name은 외부에서 던져줄 재료를 받아내는 임시 바구니이며, 이를 '매개변수(Parameter)'라고 부릅니다.들여쓰기 구간: 함수가 호출되었을 때 위이잉 작동할 핵심 로직입니다.
이렇게 함수를 만드는 행위를 '함수를 정의한다'고 하며, 이 상태에서는 주방에 믹서기를 조립해 두기만 한 것이라 아무 일도 일어나지 않습니다. 이 함수를 실제로 써먹으려면 아래와 같이 이름을 불러주어야 하며, 이를 '함수를 호출한다'고 합니다.
welcome("홍길동") # 출력: 안녕하세요, 홍길동님! 파이썬의 세계에 오신 것을 환영합니다.
welcome("이순신") # 출력: 안녕하세요, 이순신님! 파이썬의 세계에 오신 것을 환영합니다.
함수 이름 뒤 괄호에 진짜 알맹이 재료("홍길동")를 넣어 던지면, 함수 안의 name 변수에 자석처럼 쏙 들어가 코드가 실행됩니다. 이때 던져주는 진짜 값들을 '인수(Argument)'라고 부릅니다.
2. 함수의 최종 목적지: 값을 돌려주는 return
위에서 만든 welcome 함수는 화면에 문장을 출력하고 임무를 끝냈습니다. 하지만 실무에서 쓰는 대부분의 함수는 계산을 끝낸 최종 결과물을 나에게 다시 돌려주어, 내가 그 값을 다른 변수에 저장하거나 추가 계산에 활용할 수 있도록 만듭니다. 이때 믹서기의 최종 탈출구 역할을 하는 명령어가 바로 return입니다.
def add_numbers(a, b):
result = a + b
return result
# 함수를 호출하고 결과물을 변수에 담기
total_score = add_numbers(80, 95)
print(total_score) # 출력: 175
add_numbers(80, 95)를 실행하면 80과 95가 더해진 175가 계산됩니다. 그리고 return result를 만나는 순간, 함수는 자기 자신을 통째로 파괴하면서 그 알맹이 값인 175를 호출했던 그 자리에 툭 던져놓고 사라집니다. 덕분에 우리는 total_score라는 변수에 그 값(175)을 온전히 받아낼 수 있게 됩니다.
주의: return은 값을 돌려주는 역할과 동시에 함수를 그 즉시 종료하고 탈출하는 브레이크 역할도 겸합니다. 따라서 return 아래에 적은 코드는 컴퓨터가 절대 읽지 못하는 유령 코드가 되므로 주의해야 합니다.
[핵심 요약 3줄]
함수는 자주 반복되는 코드 뭉치에 이름표를 붙여두고 재사용하는 도구로,
def 함수이름(매개변수):구조로 정의한다.함수를 정의할 때 괄호 안에 적는 변수를 매개변수(Parameter)라 하고, 실제로 함수를 사용할 때 넣어주는 알맹이 값을 인수(Argument)라고 한다.
함수의 핵심 명령어인
return은 함수가 계산한 최종 결과값을 밖으로 돌려주는 동시에 함수를 그 즉시 종료시키는 브레이크 역할을 한다.
0 댓글