함수는 반복적으로 활용 될 수 있는 변수와 알고리즘 등을 묶어 호출할 수 있는 코드의 집합이다. 일반적으로는 단 하나의 목적을 가지고 만들어져 있지만, 여러가지 기능들을 처리할 수도 있고 전체적인 함수들을 또 호출하는 스크립트성 함수가 만들어질 수도 있다.
함수의 종료는 크게 4가지로 내장 함수와 외장 함수, 사용자 정의 함수 그리고 익명 함수(람다)로 나뉘어 질 수 있다. 내장 함수는 파이썬을 설치하는 순간부터 쓸 수 있는 것으로 우리가 흔히 사용했던 print() 같은 것이 내장 함수이다. 외장 함수는 외부에서 만들어진 것들을 우리가 불러다가 쓰는 것이고, 사용자 정의 함수는 사용자가 직접 만든 함수이다.
즉 지금 우리가 할려는 함수를 만들고 사용한다는 것은 사용자 정의함수를 만든다는 것과 동일하다. 그러나 사용자 정의 함수도 다른 사람들의 관점에서는 결국 외장함수이기 때문에 사용자 정의함수는 크게 외장함수라고 말할 수 있다.
람다(lambda)는 함수를 만드는데 익명으로 만드는 함수이다. 재사용 측면의 함수에서 익명이 뭔말인가 싶겠지만 코드의 가독성과 메모리 차원에서 사용될 수 있는 방식이다. 이 부분은 다음 람다 포스팅(아래 링크)을 확인하면 될 것이다. 함수는 입력값과 알고리즘 그리고 출력값으로 구성할 수 있는데 함수는 만드는 방법은 아래와 같다.
def 함수명(입력값):
수행문...
return 출력값
여기서 def는 define 즉 정의하다의 앞글자를 딴 것이다. 위 함수 예제에서 입력값(인자)과 출력값 부분의 return은 필수가 아니며 인자와 출력값이 없는 함수도 충분히 만들 수 있다.
함수 활용 예제
인자값은 있지만 결과값이 없는 경우
# 인자값은 있지만 결과값을 리턴하지 않는 형태
>>> def test1(a):
... print(a, '는 학생입니다.')
...
>>> test1('홍길동')
홍길동 는 학생입니다.
인자값은 없고 결과값이 있는 경우
# 인자값은 없고 출력값만 존재하는 형태
>>> def test2():
... return '는 학생입니다.'
...
>>> print('홍길동', test2())
홍길동 는 학생입니다.
인자값도 있고 결과값도 있는 경우
# 인자값도 있고 출력값도 있는 형태
>>> def add(a, b):
... c = a + b
... return c
...
>>>
>>> print('1더하기 2는?', add(1,2))
1더하기 2는? 3
함수(Function)와 메소드(Method) 차이
흔히 언어별로 함수(Function)를 부르는 방식이 있다. 자바에서는 함수를 보통 메소드(Method)라고 말을 하고 R이나 파이썬에서는 함수(Function)라고 표현을 많이 한다.
그래서 일반적으로 사람들이 함수와 메소드는 단지 언어간의 차이구나 생각할 수 있지만 둘간의 차이는 명확하다. 우선 함수를 설명하기 전에 메소드를 설명하자면, 메소드는 클래스 내부에 정의된 함수라고 생각하면 된다. 자바는 객체지향언어이고 무조건 클래스를 선언하기 때문에 그 안에 있는 함수들은 모두 클래스에 종속되어 있다. 즉 모든 함수들이 메소드형이라는 것이다.
이와 다르게 파이썬은 함수가 클래스에 종속될 수도 있고 클래스가 없이 만들수도 있다. 즉, 우리가 파이썬에서 모두 함수라고 말을 했지만 클래스에 속한 함수들은 엄밀히 따지면 메소드이며 메소드는 함수의 종류이기 때문에 모두 함수라고 불러도 크게 상관이 없다.
연관포스팅
2020/12/26 - [Language/Python] - [Python] 파이썬에서 람다(Lambda) 함수 사용하기
참고자료
https://www.geeksforgeeks.org/difference-method-function-python/
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 리스트 문자열 합치기 Join 함수 (0) | 2020.12.28 |
---|---|
[Python] 파이썬 람다(Lambda) 함수 사용하기 (0) | 2020.12.26 |
[Python] 파이썬에서 딕셔너리(Dictionary) 사용법 (0) | 2020.12.26 |
[Python] 파이썬에서 튜플(Tuple) 다루기, 튜플 써야 할 때 (0) | 2020.12.23 |
[Python] 파이썬에서 리스트 사용하기 (0) | 2020.12.23 |