Python/기초

파이썬 함수(Function)와 메소드(Method)의 차이

sdesign416 2026. 5. 26. 15:25

파이썬을 공부하다 보면 가장 많이 헷갈리는 개념 중 하나가 함수와 메소드이다.

 

겉으로 보기에는 둘 다 ()를 붙여서 실행되기 때문에 비슷해 보이지만,
실제로는 존재하는 위치와 동작 방식이 완전히 다르다.


1. 함수(Function)란?

함수는 특정 작업을 수행하기 위해 독립적으로 정의된 코드 블록이다.

쉽게 말해, 객체나 클래스와 관계없이

단독으로 존재할 수 있으며 필요할때만 호출해서 사용하는 코드이다.

 

함수의 특징

  • 독립적으로 존재한다.
  • 입력값(매개변수)를 받을 수 있다.
  • 반환값(return)을 가질 수 있다.
  • 특정 객체에 종속되어있지 않다.
def add(a, b):
    return a + b

print(add(3, 5))

위 코드에 add()어떤 객체에도 속하지 않은 독립적인 함수이다.


2. 메소드(Method)란?

메소드는 특정 객체(Object)에 종속되어 있는 함수이다.

클래스 안에 정의되며,

해당 클래스의 인스턴스(객체)를 통하여 호출될 수 있다.


메소드의 특징

  • 반드시 객체와 연결되어 있다.
  • 클래스 내부에 정의된다.
  • 첫 번째 매개변수로 self를 사용한다.
  • 객체의 상태를 변경하거나 참조할 수 없다.
text = "hello"

print(text.upper())

upper()문자열 객체 text종속된 메소드이다.


3. 함수와 메소드 차이

함수는 독립적인 기능이고,

메소드는 객체에 붙어있는 기능이다.

구분 함수 (Function) 메소드 (Method)
존재 위치 독립적 클래스 내부
호출 방식 function() object.method()
종속성 없음 객체에 종속
첫 매개변수 없음 self 사용
역할 일반 기능 수행 객체 상태 처리

4. 어디에 쓰이는가?

함수는 보통 계산을 할 때 많이 사용된다.

합계 계산, 평균 구하기, 데이터 변환 함수 등 

독립적으로 처리하여 계산이 필요할 때 사용할 수 있다.

 

메소드객체 상태를 다루거나

데이터와 기능이 묶여있어야 할 때 많이 사용된다.

문자열이나 리스트, 딕셔너리와 같은 자료형을 조작할 때 사용할 수 있다.


헷갈렸던 포인트

파이썬을 공부하면서 함수와 메서드가 나오기 시작할 때

나는 내가 만든건 함수이고 파이썬이 기본적으로 제공하는 것은 메소드라고 생각했었다.

 

예를 들어 print()input() 같은 것은 함수이고,

upper(), append() 같은 것은 파이썬이 만들어 둔 기능이라서 메소드라고 단순하게 구분했었다.

 

하지만 공부를 계속 하다보니 내가 했던 생각이 정확한 기준이 아니라는 것을 알게되었다.

 

함수와 메소드의 차이는 

누가 만들었는지가 아니라 어디에 속해 있는가의 차이이다.

 

그래서 내가 직접 만들더라도 클래스 밖에서 만들면 함수가 되고,

반대로 내가 직접 클래스 안에 만들면 메소드가 되는것이다.

 

즉, 함수와 메소드를 구분할 때 가장 중요한 것은

독립적으로 존재하는 기능인지, 객체에 소속된 기능인지를 확인하여 구분하면 된다.