본문 바로가기

Python

파이썬 함수: 코드 재사용의 핵심

오늘은 파이썬 프로그래밍의 핵심 중 하나인 함수(function) 에 대해 다뤄보겠습니다. 함수는 코드의 재사용성을 높여주며, 구조화된 코드 작성에 도움을 줍니다. 그럼 바로 시작해볼까요?

1. 파이썬 함수의 정의와 호출

함수는 def 키워드를 사용하여 정의합니다. 기본 구조는 다음과 같습니다.

def 함수명(매개변수1, 매개변수2, ...):
    # 함수 본문
    return 반환값

간단한 예제를 통해 함수를 정의하고 호출하는 방법을 알아봅시다.

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

message = greet("연진")
print(message)  # 출력: 안녕하세요, 연진님!

2. 매개변수와 인자

함수를 호출할 때 값을 전달하면, 이 값들은 함수 내부에서 매개변수를 통해 접근 가능합니다. 함수를 호출할 때 전달하는 값들을 인자(argument)라고 합니다.

def add(a, b):
    return a + b

result = add(10, 20)
print(result)  # 출력: 30

3. 기본값이 있는 매개변수

함수의 매개변수는 기본값을 가질 수 있습니다. 이렇게 되면 해당 매개변수에 대한 인자 전달을 생략할 수 있습니다.

def greet(name="여러분"):
    return f"안녕하세요, {name}!"

print(greet())          # 출력: 안녕하세요, 여러분!
print(greet("문동은"))  # 출력: 안녕하세요, 문동은님!

4. 람다 함수

파이썬에는 이름 없이 간단하게 함수를 정의하는 람다 함수가 있습니다.

multiply = lambda x, y: x * y
print(multiply(2, 3))  # 출력: 6

5. 파이썬 함수가 다른 언어와 다른 점

  1. 동적 타이핑:
    • 파이썬은 동적 타입 언어이므로, 함수의 매개변수에 특정 타입을 지정할 필요가 없습니다. 하나의 함수가 다양한 타입의 인자를 받을 수 있습니다.
  2. 기본값 매개변수:
    • 파이썬 함수의 매개변수는 기본값을 가질 수 있습니다. 이 기능은 함수 호출 시 해당 매개변수에 값을 전달하지 않아도 기본값을 사용하게 해줍니다.
  3. 키워드 인자:
    • 함수를 호출할 때, 인자를 매개변수의 이름으로 명시적으로 전달할 수 있습니다. 이렇게 하면 인자의 순서를 걱정할 필요가 없으며 코드의 가독성도 높아집니다.
  4. 가변 길이 인자:
    • *args**kwargs를 사용하여 임의의 개수의 인자를 함수에 전달할 수 있습니다. *args는 위치 인자를 튜플로 받아오고, **kwargs는 키워드 인자를 딕셔너리로 받아옵니다.
  5. 람다 함수:
    • 파이썬은 이름 없이 짧고 간단하게 함수를 정의할 수 있는 람다(lambda) 함수를 제공합니다.
  6. 첫 클래스 객체:
    • 파이썬의 함수는 일급 객체(first-class object)입니다. 이 말은 함수를 변수에 할당할 수 있으며, 다른 함수의 인자로 전달하거나 반환값으로 사용할 수 있다는 의미입니다.
  7. 내부 함수:
    • 파이썬에서는 함수 내부에 또 다른 함수를 정의할 수 있습니다. 이러한 내부 함수는 클로저(closure)와 연관된 특성을 갖습니다.
  8. 데코레이터:
    • 파이썬에서는 함수나 클래스의 기능을 수정하지 않고 기능을 추가하거나 변경하고 싶을 때 사용하는 데코레이터(decorator)라는 특징을 제공합니다.

결론

함수는 파이썬 프로그래밍의 기본적이면서도 중요한 요소입니다. 코드의 재사용성을 높여주며, 복잡한 프로그램을 작성할 때 코드의 가독성과 관리성을 크게 향상시켜줍니다. 함수에 대한 이해를 깊게 하면, 훨씬 더 효율적이고 전문적인 코드를 작성할 수 있게 됩니다.