RAG

패스트캠퍼스 환급챌린지 44일차 : 테디노트의 RAG 비법노트 강의 후기

Sssadie 2025. 12. 25. 12:01
반응형

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

함수의 개념과 활용

함수(Function)

- 하나의 단위로 패키지 된 특정 작업을 수행하는 프로그램 명령 시퀀스

- 프로그램의 품질과 신뢰성을 높이며 유지보수 비용을 대폭 절감할 수 있음

 

함수의 정의

  • def {function_name}({parameters}) : 로 함수의 정의 시작
  • 들여쓰기(indent)로 기존 코드와 구분됨
  • 매개변수가 없을 경우, 생략 가능
  • 반환값이 없을 경우, 생략 가능
  • '함수의 정의'로는 실제 명령문이 실행되지 않음
  • 동일한 함수명으로 정의할 경우, 함수가 재정의 됨
  • 함수는 반환되는 순간 종료됨(return statement)

함수의 호출

  • 정의한 함수를 실제로 사용
  • function_name(arguments) 형태로 호출
    - 매개변수(parameter) : 함수의 정의에 사용되는 변수명
    - 인자(argument) : 함수의 호출 시 전달되는 실제 값
  • 결과값을 변수에 저장할 수 있음

함수의 활용

  • 코드 재사용성 증가
  • 가독성 향상
  • 유지보수성 향상
  • 재귀호출

※ 재귀 호출 주의사항

  • 종료 조건 필수
  • 잘못 설계하면 스택 오버플로우
  • 반복문보다 직관적인 경우에만 사용
def sum(num1, num2):
    print(f"첫 번째 숫자: {num1}")
    print(f"두 번째 숫자: {num2}")
    
    return num1 + num2

함수명(function name)

함수 바깥에서 해당 함수를 호출하기 위한 식별자

 

매개변수(parameters)

함수가 실행되는데 필요한 변수

(num1, num2)
  • 매개변수도 변수이기 때문에 다양한 형태의 값을 전달할 수 있음.
  • 함수 정의에 따라서 매개변수를 전달하지 않은 것도 가능.
  • 하나의 값이 아니라 여러 개의 값을 동시에 정의해서 전달하는 것도 가능.

본문(function body)

함수가 호출되었을 때 실행될 명령문의 집합

print(f"첫 번째 숫자: {num1}")
print(f"두 번째 숫자: {num2}")
  • 전체적인 생산성이 향상되는 '코드의 재사용'을 위해 본문을 재사용 가능하도록 잘 구성해야함.
  • 잘 정의된 함수는 반복적으로 사용될 수 있는 코드를 하나의 함수로 대체할 수 있게 만들어주기 때문에 전체 코드의 양을 줄이고, 신뢰할 수 있게 작성된 함수는 전체 프로그램의 짜임새를 높여줌.

반환값(return value)

함수 실행이 완료된 후 함수를 호출한 곳에 반환할 결과값

 


사실 '함수'라는 개념은 프로그래밍을 배우기 전부터 여러 분야에서 이미 익숙하게 접해왔죠. y=f(x) 형태의 함수 말입니다. 함수는 어떤 값 x가 주어졌을 때, 정해진 규칙에 따라 하나의 결과 y를 반환하는 관계를 의미하죠. 중요한 점은, 같은 입력값이 들어오면 항상 같은 결과가 나온다는 겁니다. 즉, 함수는 입력값과 출력 사이의 일관된 규칙을 정의한 개념이라고 볼 수 있습니다. 

 이 개념을 조금 더 확장해 보겠습니다. 함수는 단순히 숫자 계산에만 국한되지는 않죠. 어떤 값이 들어오면, 그 값에 대해 미리 정의된 과정을 거쳐 결과를 만들어내는 블랙박스와 같다고 볼 수 있죠. 우리는 함수 내부에서 어떤 계산이 이루어지는지 몰라도, 입력과 출력의 관계만 알면 함수를 사용할 수 있습니다. 수학에서 함수가 복잡한 계산을 단순화해 주는 도구였다면, 프로그래밍에서의 함수도 역시나 같은 역할을 하죠. 

 프로그래밍에서 함수는 수학적 개념을 그대로 확장한 형태라고 볼 수 있어요. 특정 입력값(매개변수)를 받아서 정해진 로직을 수행한 뒤 결과값을 반환한다는 점에서 y=f(x)와 구조적으로 동일하죠. 다만, 프로그래밍 함수는 숫자뿐만 아니라 문자열, 리스트, 객체 등 다양한 형태의 데이터를 입력과 출력으로 다룰 수 있다는 점이 달라요. 또한 단순한 계산 뿐만 아니라 출력, 저장, 조건 판단 등 복잡한 작업도 하나의 함수로 묶을 수 있죠. 이렇게 보면 파이썬의 함수는 '코드를 묶는 문법'이라기보다 생각을 정리하는 방식에 가깝다는 생각이 들어요. 어떤 문제를 해결할 때, 입력은 무엇이고 그 입력을 받아 어떤 처리를 하며, 어떤 결과를 반환해야 하는지를 명확히 정의하는 과정이 곧 함수 설계니까요.

 오늘 함수 개념을 다시 정리하면서, 함수는 프로그래밍을 위한 새로운 개념이 아니라 이미 익숙했던 사고 방식을 코드로 옮긴 것이라는 사실을 다시 느낄 수 있었어요. 앞으로 코드를 작성할 때도 단순히 '동작하는 코드'를 만드는 것이 아니라, 입력과 출력이 명확한 함수로 문제를 나누는 습관을 들일 수 있도록 생각하면서 연습해야겠어요. 결국 '좋은 프로그램'이라는 것은, 잘 정의된 함수들의 조합이라는 생각이 드네요.

오늘은 메리크리스마스!!

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

 

반응형