본문 바로가기
오픈소스를 위한 기초 상식

오랜만에 파이썬: 함수(Function)와 매개변수(Parameter)

by 지나가는 프로도 2025. 2. 14.

기초 개념 정리

함수(Function)와 매개변수(Parameter)

함수(Function)는 특정 작업을 수행하는 코드의 묶음입니다. 이를 통해 반복되는 코드를 재사용할 수 있으며, 유지보수성을 높일 수 있습니다. 함수는 입력값(매개변수, Parameter)을 받아 특정 연산을 수행한 후 결과를 반환할 수도 있습니다.

1. 함수와 매개변수의 개념

함수는 def 키워드를 사용하여 정의하며, 필요한 경우 매개변수를 받을 수 있습니다. 매개변수는 함수에 전달되는 값으로, 함수가 실행될 때 필요한 데이터를 제공합니다.

예제 코드:

def 인사하기(이름):  # '이름'이 매개변수입니다
    print(f"안녕하세요, {이름}님!")

인사하기("철수")  # "철수"는 인자(argument)입니다

위 코드에서 인사하기 함수는 매개변수 이름을 받아 화면에 인사 메시지를 출력합니다.


클래스(Class)와 객체(Object)

클래스(Class)는 객체(Object)를 만들기 위한 설계도입니다. 클래스는 데이터(속성)와 해당 데이터를 조작하는 함수(메서드)를 포함할 수 있습니다. 객체(Object)는 클래스를 기반으로 생성된 실체로, 클래스에서 정의한 속성과 메서드를 가집니다.

1. 클래스와 객체의 개념

클래스를 정의할 때 class 키워드를 사용하며, 생성자 메서드 __init__을 활용하여 객체의 초기 상태를 설정할 수 있습니다.

예제 코드:

class 자동차:
    def __init__(self, 색상):
        self.색상 = 색상  # 속성 정의
    
    def 운전하기(self):
        print(f"{self.색상} 자동차가 달립니다!")

내차 = 자동차("빨간색")  # '내차'는 자동차 클래스의 객체입니다
내차.운전하기()

위 코드에서 자동차 클래스는 색상 속성을 가지며, 운전하기 메서드를 실행하면 해당 자동차의 색상을 포함한 메시지가 출력됩니다.


상속(Inheritance)과 다형성(Polymorphism)

객체 지향 프로그래밍(OOP)에서 중요한 개념인 **상속(Inheritance)**과 **다형성(Polymorphism)**은 코드의 재사용성을 높이고, 유연한 설계를 가능하게 합니다.

1. 상속(Inheritance)

상속은 기존 클래스(부모 클래스)의 특성을 새로운 클래스(자식 클래스)가 물려받는 개념입니다. 이를 통해 공통된 기능을 재사용할 수 있습니다.

2. 다형성(Polymorphism)

다형성은 같은 이름의 메서드를 각 클래스에서 다르게 구현할 수 있도록 합니다. 이를 통해 코드의 유연성이 증가합니다.

예제 코드:

class 동물:
    def 소리내기(self):
        print("...")

class 강아지(동물):  # 동물 클래스를 상속받음
    def 소리내기(self):  # 메서드 오버라이딩(다형성)
        print("멍멍!")

class 고양이(동물):
    def 소리내기(self):
        print("야옹!")

강아지_객체 = 강아지()
고양이_객체 = 고양이()

강아지_객체.소리내기()  # 출력: 멍멍!
고양이_객체.소리내기()  # 출력: 야옹!

위 코드에서 강아지고양이 클래스는 동물 클래스를 상속받았으며, 각각의 소리내기 메서드를 재정의(오버라이딩)하여 다형성을 구현하고 있습니다.


모듈(Module)

모듈(Module)은 파이썬 코드를 포함한 파일로, 특정 기능을 모아두고 다른 프로그램에서 재사용할 수 있도록 설계된 코드 단위입니다. 모듈을 사용하면 코드의 재사용성이 높아지고, 유지보수가 편리해집니다.

1. 모듈의 개념과 사용법

모듈은 .py 확장자를 가진 파일로 저장되며, import 키워드를 사용하여 다른 파일에서 불러올 수 있습니다.

예제 코드:

# 수학_모듈.py (모듈 파일)
def 더하기(a, b):
    return a + b

def 빼기(a, b):
    return a - b

위 코드를 모듈 파일로 저장한 후, 다른 파일에서 다음과 같이 불러와 사용할 수 있습니다.

import 수학_모듈

결과 = 수학_모듈.더하기(5, 3)
print(결과)  # 출력: 8

이처럼 모듈을 사용하면 특정 기능을 별도 파일로 관리할 수 있으며, 필요할 때마다 호출하여 사용할 수 있습니다.

 

메서드와 함수

메서드(Method)는 함수(Function)의 한 종류입니다.

차이점

  • 함수(Function): 클래스와 관계없이 독립적으로 정의된 코드 블록입니다.
     
     
def 인사():
    print("안녕하세요!")

 

  • 메서드(Method): 클래스 내부에서 정의된 함수로, 특정 객체와 연관되어 실행됩니다
class 사람:
    def 인사(self):
        print("안녕하세요!")

철수 = 사람()
철수.인사()  # 메서드 호출

 

정리

  • 모든 메서드는 함수이지만, 모든 함수가 메서드는 아닙니다.
  • 메서드는 특정 객체와 연결되어 있으며, 보통 self(또는 cls 같은 첫 번째 매개변수)를 사용합니다.
  • 독립적으로 사용되는 일반적인 함수와 달리, 메서드는 클래스 내부에서 정의되고 객체를 통해 호출됩니다.

 

마무리

결론

이번 글에서는 파이썬의 핵심 개념인 함수(Function)와 매개변수(Parameter), 클래스(Class)와 객체(Object), 상속(Inheritance)과 다형성(Polymorphism), 그리고 모듈(Module)에 대해 살펴보았습니다. 이러한 개념들은 파이썬 프로그래밍에서 필수적으로 익혀야 하는 요소로, 코드의 재사용성과 유지보수성을 높이는 데 중요한 역할을 합니다.

각 개념을 잘 이해하고 실습해보면 파이썬을 더욱 효율적으로 활용할 수 있으며, 복잡한 프로그램을 보다 체계적으로 설계할 수 있습니다.