본문으로 바로가기

Python: Function (1)

category Programming/Python 2021. 1. 12. 17:26
반응형

오늘 다룰 주제는 파이썬의 Function이다. 그리고, 생각보다 내용이 많은 관계로 내용을 나눠서 정리할 예정이다.

이정도면, 프로그래밍에서 펑션은 필수불가결한 요소가 아닐까 생각이 들 정도로 대부분의 프로그래밍 언어에서 펑션을 지원하고, 펑션이 사용되지 않은 프로그램을 찾는 것이 더 어려울 정도로 많이 활용되고 있다.

펑션의 사용 목적은 코드의 재사용이라고 말할 수 있다. 프로그래밍 과정에서 반복적으로 입력되어야 하는 프로그램 구문을 하나의 펑션으로 정의하고, 호출이라는 과정을 통해 짜여진 내부 프로그램 코드를 반복 실행시키는 것이다.

파이썬에서 펑션을 정의할 때는 위 그림과 같이 def 키워드와 펑션의 이름, 그리고 괄호 순으로 나열한다.
정의된 펑션의 내부 프로그램 코드는 7번과 8번 라인과 같이 펑션을 호출했을 때 실행된다. 바꿔 말하면, 펑션을 정의했다 하더라도, 호출이라는 과정이 없다면 펑션은 실행되지 않는다는 의미이다.
호출에 의해 펑션 내부의 프로그램이 실행되는 과정에서 fcAddVar와 같이 데이터가 필요한 경우도 있고, fcMakeSomeNoise와 같이 데이터가 필요하지 않는 경우도 있다. 이럴 때는 펑션 이름 다음에 따라오는 괄호 안에 매개변수를 정의함으로써, 펑션의 호출 과정에서 원하는 데이터를 전달해줄 수 있다. 물론, 데이터 전달이 필요 없는 펑션에 대해서는 괄호 안을 비워두어도 상관 없다.

매개변수를 이용해서 펑션 내부로 데이터를 전달한다면, 펑션 내부의 실행 결과는 위 그림과 같이 return을 통해 반환된다. return과 함께 정의된 반환 데이터는 펑션 내부의 연산 처리가 완료된 후 펑션을 호출한 위치로 전달된다. 만약, 데이터의 반환이 필요하지 않는 펑션의 경우 retuen을 생략해도 상관 없다.

IEC 표준 언어를 포함한 대부분의 프로그래밍 언어에서는 펑션을 정의할 때, 어떤 타입의 데이터를 반환할 것인지를 지정해주어야 한다. 하지만, 파이썬은 전달되는 데이터에 따라 타입이 결정되는 동적 프로그래밍 언어이므로, 펑션이 반환할 데이터 타입을 지정해주거나, 매개변수로 전달되는 데이터 타입을 지정할 필요가 없다.

당연한 이야기겠지만, 펑션을 정의할 때 둘 이상의 매개변수를 지정하여 여러 데이터를 전달 받을 수 있다. 그리고, 펑션을 호출할 때 전달되는 데이터의 순서를 잘못 기재하면 위 그림과 같이 의도하지 않은 결과를 얻게 된다.
다른 정적 프로그래밍 언어처럼, 파이썬도 변수를 선언하는 방식으로 매개변수를 정의한다면 타입이 불일치하는 데이터가 전달되는 과정에서 어느 정도 걸러질 수 있지만, 파이썬은 동적 데이터 타입을 지원하기 때문에 위 그림과 같은 결과를 얻게 된다.

하지만, 펑션을 정의할 때 사용한 매개변수의 이름과 함께 데이터를 전달한다면, 호출하는 과정에서 입력한 순서와 관계 없이 원하는 매개변수에 원하는 데이터를 정확히 전달할 수 있다. 파이썬의 이러한 특성 때문에라도, 펑션을 호출할 때는 매개변수와 함께 데이터를 전달하는 습관을 가지는 것이 여러가지로 필요해 보인다.

 

반응형

'Programming > Python' 카테고리의 다른 글

Python: Function (3)  (0) 2021.01.17
Python: Function (2)  (0) 2021.01.15
Python: Comprehension  (0) 2021.01.05
Python: Dictionary  (0) 2021.01.03
Python: Set  (0) 2021.01.02