파이썬 함수와 메소드의 차이는? (function vs methods)

파이썬 문법(syntax)에서 .join 형태로 뒤에 붙여서 쓰는 메소드와, print() 처럼 사용하는 함수의 차이는 무엇인지 알아본다.

함수 function

함수의 기본 형태는 함수명() 이다.

함수는 이를테면 동사+목적어와 같은 문법이다.

Print("hello")

라고 하면 hello를 (목적어) Print 해라 (동사) 와 같은 의미가 된다.

함수는 어떤 행위를 하는 동작을 일컫는 말이기 때문에 단독으로 쓸 수가 있다.

  • 함수는 그것의 이름으로 호출되는 독립적인 코드이다.
  • 매개변수 (파라미터)를 가질수도 있고 없을수도 있다.
  • 데이터를 반환할 수도, 반환하지 않을수도 있다.
  • 함수에 전달되는 모든 데이터는 명시적으로 (explicitly) 전달된다.
  • 함수의 값을 다른 변수에 대입할 수도 있다.
score = data(input)

메소드 methods

메소드의 기본 형태는 객체.메소드명() 이다.

객체 (object)와 함께 지정이 되어야 한다.

name.count('a')

라고 하면 name에서 a가 몇 개 있는지 count를 하라는 의미가 된다.

메소드는 그것을 실행할 객체가 있어야 하며 거기에 .메소드() 형태로 붙는다.

  • 메소드는 객체와 연결된 이름으로 호출되는 코드이다.
  • 메소드는 클래스 내에 포함된 데이터에 대해 작업할 수 있다.
  • 데이터를 반환할 수도, 반환하지 않을수도 있다.
  • 메소드에 전달되는 모든 데이터는 암시적으로 (implicitly) 전달된다.

함수와 메소드의 차이점

함수는 단독으로, 메소드는 객체뒤에 . 붙어서 온다는 것 외에 실제로 파이썬에서 내장함수로 지정된 것들을 사용할 때의 큰 차이점은 없다. 어차피 있는 명령어 가져다 쓰기만 하면 되니까.

조금 복잡한 클래스와 객체의 개념으로 들어가면 의미의 차이가 나타나는데, 따지자면 메소드는 클래스 내에서 정의된 함수인 셈이다. (클래스와 객체에 대해선 다음에 자세히 다시….)

즉, 함수는 그냥 단독으로 어떠한 명령을 처리하도록 해놓은 계산기라고 한다면 메소드는 어떠한 작업 틀 (클래스) 안에서 만들어 놓은 하나의 툴이다. 

  • 함수 : 온풍이 나와서 머리를 말리는 드라이
  • 메소드 : 라면 끓이는 기계 (클래스) 에서 물 붓고, 스프넣고, 그릇에 담는 작업을 하는 각각의 툴