함수(Function)란?
파이썬에서 함수는 특정 작업을 수행하기 위해 작성된 코드 블록입니다. 함수는 자체적인 유효 범위(scope)를 가지며, 이름을 통해 호출됩니다. 함수는 인자(argument)를 전혀 받지 않거나 하나 이상의 인자를 받을 수 있고, 종료 시 값을 반환할 수도 있고 반환하지 않을 수도 있습니다.
기본 함수 문법
def functionName( arg1, arg2,...):
......
# 함수 본문
......간단한 사용자 정의 함수를 만들어 보겠습니다. 아래 예제의 함수 이름은 'sum'으로 지정했지만, 원하는 이름을 자유롭게 사용할 수 있습니다. 이 함수는 num1과 num2라는 두 개의 인자를 받아 두 값의 합을 반환합니다. 함수를 5와 6이라는 인자로 호출하면 11이 반환됩니다.
def sum(num1, num2):
return (num1 + num2)실행 결과
>>> sum(5,6) 11
위 예제에서 볼 수 있듯이, return 문은 파이썬 함수로부터 값을 반환하는 역할을 합니다.
함수를 활용하면 코드 재사용성(code reusability)을 높일 수 있습니다. 파이썬의 함수는 크게 세 가지로 나눌 수 있습니다.
- 내장 함수(Built-in functions): 파이썬 언어에 기본적으로 포함되어 있는 함수입니다. 예를 들어 도움말을 요청하는 help(), 최댓값을 구하는 max(), 객체의 타입을 반환하는 type() 등이 있습니다.
- 사용자 정의 함수(User-defined functions): 사용자가 직접 만들어 사용하는 함수입니다. 위에서 만든 'sum' 함수가 대표적인 예입니다.
- 익명 함수(Anonymous Functions): 일반적으로 lambda 함수라고 불리며, def 키워드 대신 lambda 키워드로 정의한다는 점이 일반 함수와 다릅니다.
메소드(Method)란?
파이썬에서 메소드는 함수와 매우 유사하지만, 객체나 클래스에 연관되어 있다는 점이 다릅니다. 메소드는 함수와 비슷하지만 다음 두 가지 중요한 차이점이 있습니다.
- 메소드는 호출된 객체에 암묵적으로(implicitly) 적용됩니다.
- 메소드는 해당 클래스 내부에 포함된 데이터에 접근할 수 있습니다.
일반적인 메소드 문법
class ClassName:
def method_name():
..........
# 메소드 본문
..............간단한 코드 예제를 통해 메소드를 이해해 보겠습니다.
class Pet(object):
def my_method(self):
print("I am a Cat")
cat = Pet()
cat.my_method()실행 결과
I am a Cat
위 코드에서는 먼저 'Pet'이라는 클래스를 정의했습니다. 그다음 이 설계도(클래스)를 바탕으로 'cat'이라는 객체를 생성하고, 마지막으로 해당 객체를 통해 my_method라는 사용자 정의 메소드를 호출했습니다.
파이썬에서 메소드와 함수의 핵심 차이점
함수와 메소드에 대한 기본 개념을 살펴보았으니, 이제 두 가지의 핵심적인 차이점을 정리해 보겠습니다.
- 함수와 달리 메소드는 반드시 객체를 통해 호출됩니다. 위 예제에서 메소드인 'my_method'는 객체 'cat'을 통해 호출된 반면, 함수인 'sum'은 어떠한 객체 없이 독립적으로 호출되었습니다. 또한 메소드는 객체를 통해 호출되기 때문에 그 객체 내부의 데이터에 접근할 수 있습니다.
- 메소드는 객체의 상태(state)를 변경할 수 있는 반면, 파이썬의 일반 함수는 객체의 상태를 변경하지 않고 주어진 데이터를 처리하는 방식으로 동작합니다.
요약하자면, 메소드란 특정 객체에 속해 있는 함수라고 할 수 있습니다.