함수(Function)란?
프로그래밍을 하다 보면 같은 동작을 여러 번 수행해야 할 때가 있습니다. 예를 들어, 여러 숫자의 평균을 구하거나 특정 문자열을 반복해서 출력하는 경우가 있죠. 이런 반복되는 작업을 매번 처음부터 코드로 작성하는 것은 비효율적입니다.
이러한 문제를 해결하기 위해 '함수'라는 개념이 있습니다. 함수는 특정 작업을 수행하는 코드를 하나의 블록으로 묶어놓은 것입니다. 수학의 함수와 같이, 입력값을 넣으면 정해진 동작을 수행하고 결과를 돌려줍니다.
함수는 변수와 마찬가지로 이름을 가지고 있어서, 필요할 때마다 그 이름으로 호출하여 사용할 수 있습니다. 예를 들어 'calculate_average'라는 이름의 함수를 만들면, 평균을 구해야 할 때마다 이 함수를 호출하여 쉽게 계산할 수 있습니다. 이처럼 함수는 코드를 더 체계적이고 효율적으로 관리할 수 있게 해줍니다.
함수의 기본 구조
def 함수이름():
# 함수 내용
return 결과값 # 선택사항
Python
복사
def say_hello():
print("안녕하세요!")
# 함수 호출
say_hello() # 출력: 안녕하세요!
def get_menu():
print("1. 아메리카노")
print("2. 카페라떼")
print("3. 카푸치노")
# 함수 호출
get_menu() # 메뉴 목록이 출력됩니다
Python
복사
위 예시에서 say_hello()와 get_menu() 함수는 정해진 동작을 수행합니다. 이런 형태의 함수는 단순하지만 반복되는 작업을 깔끔하게 정리할 수 있어 매우 유용합니다. 한 번 작성해 두면 재작성할 필요 없이 언제든지 호출하여 사용할 수 있죠. 함수를 호출할 때는 항상 괄호를 함께 써야 하는데, 여기에는 이유가 있습니다.
매개변수를 포함하는 함수
매개변수(Parameter)는 함수에 입력(호출할때 넣어주면 함수내에 전달 되는값)되는 값을 의미합니다. 예를 들어 add(a, b) 함수에서 a와 b가 매개변수입니다. 매개변수를 통해 함수는 다양한 입력값에 대해 동작할 수 있습니다.
함수를 실제로 호출할 때 전달하는 값을 '인수(Argument)'라고 합니다. add(5, 3)에서 5와 3이 인수입니다. 매개변수는 함수를 정의할 때 사용하는 변수이고, 인수는 함수를 호출할 때 전달하는 실제 값입니다. 예시에서 자세히 보시죠!
# 함수정의
def 함수이름(매개변수1, 매개변수2, ...):
# 함수 내용
# 매개변수1, 매개변수2 등을 사용한 코드
return 결과값 # 선택사항
# 함수 호출
함수이름(인수,인수)
Python
복사
위의 기본 구조에서 매개변수는 함수가 작업을 수행하는 데 필요한 데이터를 받아들이는 변수입니다. 매개변수는 쉼표로 구분하여 여러 개를 정의할 수 있습니다.
# 함수정의(이름과 나이 매개변수를 받아 인사하는 함수)
def greet_person(name, age):
print(f"안녕하세요! {name}님, {age}살이시군요!")
# 함수 호출(인수전달)
greet_person("김철수", 25) # 출력: 안녕하세요! 김철수님, 25살이시군요!
Python
복사
매개변수는 함수의 유연성을 크게 높여줍니다. 예를 들어, 숫자를 제곱하는 함수를 만들 때 매개변수를 사용하면 어떤 숫자든 제곱할 수 있습니다. 만약 매개변수가 없다면 각각의 숫자에 대해 별도의 함수를 만들어야 할 것입니다.
# 매개변수를 사용한 유연한 함수
def square(number):
return number * number
# 다양한 숫자에 대해 같은 함수 사용 가능
print(square(2)) # 4
print(square(5)) # 25
print(square(10)) # 100
Python
복사
이처럼 매개변수를 활용하면 하나의 함수로 다양한 상황에 대응할 수 있어, 코드의 재사용성과 효율성이 크게 향상됩니다.
함수의 주요 구성요소
•
def 키워드: 함수를 정의할 때 사용하는 예약어
•
함수이름: 함수를 호출할 때 사용하는 식별자
•
매개변수(Parameter): 함수에 전달되는 입력값
•
함수 본문: 실제 작업을 수행하는 코드
•
return 문: 함수의 결과값을 반환 (선택사항)
함수에서 return 문을 사용하지 않는 경우
•
함수가 특정 동작만 수행하고 값을 반환할 필요가 없을 때 return을 생략할 수 있습니다. 예를 들어 get_menu() 함수처럼 단순히 메뉴를 출력하는 경우입니다.
실제 예시를 보면
def print_message(msg):
print(msg) # 단순히 출력만 하고 반환값이 없음
def say_hello():
print("Hello!") # 메시지만 출력하고 반환값이 없음
Python
복사
이러한 함수들은 특정 작업(예: 출력)만 수행하고 값을 반환할 필요가 없기 때문에 return 문이 필요하지 않습니다.
return 문의 활용
함수에서 return을 사용하여 값을 반환하면, 그 결과를 변수에 저장하거나 다른 연산에 활용할 수 있습니다. 이는 프로그램의 유연성을 크게 높여줍니다.
def calculate_area(width, height):
return width * height
# 반환값을 변수에 저장
room_area = calculate_area(5, 4)
print(f"방의 면적: {room_area}평")
# 반환값을 직접 다른 계산에 사용
total_cost = calculate_area(5, 4) * 1000000
print(f"총 비용: {total_cost}원")
Python
복사
이처럼 함수가 반환한 값은 프로그램의 다른 부분에서 자유롭게 활용할 수 있습니다. 반면 return이 없는 함수는 블록 내 코드를 실행하기만 할 뿐, 그 결과값을 다른 곳에서 사용할 수 없습니다.
함수의 장점
함수는 코드를 단순히 나열하는 것보다 훨씬 더 효율적입니다. 코드 작성의 효율성을 높여주는 함수의 여러 장점들을 아래와 같이 정리해보겠습니다.
•
코드 재사용: 같은 코드를 여러 번 작성할 필요가 없음
•
모듈화: 프로그램을 작은 단위로 나눠서 관리 가능
•
유지보수: 코드 수정이 용이함
•
가독성: 코드의 의도를 더 명확하게 표현 가능
다양한 표준함수
파이썬에는 이미 만들어져 있는 다양한 표준 함수들이 있습니다. print(), len(), type(), range() 등과 같은 내장 함수들은 별도의 정의 없이 바로 사용할 수 있죠. 이러한 표준 함수들은 프로그래밍을 더욱 효율적으로 만들어줍니다.
# 자주 사용되는 표준 함수들의 예시
print("Hello World") # 출력 함수
len([1, 2, 3]) # 길이를 반환하는 함수
type(42) # 데이터 타입을 확인하는 함수
Python
복사
위에서 학습한거 연습해야죠?
연습한거 스레드에 답글이나 피드에 남겨주시면 참 좋겠네요!!!
실습은 colab노트북 상단메뉴에서 “Drive에 사본저장”을 한 후에 실행하세요! 질문은 스레드에 해주세요~!