본문 바로가기
프로그래밍 언어/Python

Python(파이썬) 8. 함수(Function)

by kkmin93 2021. 9. 23.
반응형

 

 

" 비관론자들은 모든 기회에 숨어 있는 문제를 보고, 낙관론자들은 모든 문제에 감추어져 있는 기회를 본다. "

 

- 토마스 프리드만 -

 

Python(파이썬) 8. 함수(Function)

목 차
1. 함수란?
2. 매개변수와 인수
3. 함수의 종류
4. *args와 **kwargs
5. 람다(Lambda) 함수

 

1. 함수란?

 

" 과일 주스를 만들기 위해 우리는 원하는 과일을 고른 후 믹서기에 넣고 과일 주스를 만들어 마시게 된다.

이는 입력값을 가지고 어떤 일을 수행한 다음에 그 결과값을 내놓는 함수와 매우 비슷하다. "

 

 

 1) 함수를 사용하는 이유

  • 소스코드 내 중복(반복)되는 프로그래밍을 피하기 위함
  • 가독성, 유지보수 능력 향상

 

 2) 파이썬 함수의 구조

def 함수명(매개변수):
    <수행할 문장1>
    <수행할 문장2>
    ...
  • def는 함수를 만들 때 사용하는 예약어이며, 함수 이름 뒤 괄호 안의 매개변수는 함수에 입력으로 전달되는 값을 받는 변수이다.
  • return은 함수의 결과값을 돌려주는 예약어이다.

① 변수 x, y를 생성 후 add() 함수에 x, y를 입력값으로 넣어준다.
② return 되는 결과값은 변수 sum에 저장
③ print() 함수로 변수 sum 출력

 

2. 매개변수와 인수

 1) 매개변수(parameter)

  • 함수에 입력으로 전달된 값을 받는 변수

 

 2) 인수(arguments)

  • 함수를 호출할 때 전달하는 입력값

 

3. 함수의 종류

 1) 일반적인 함수

  • 입력값이 있고 결과값이 있는 가장 자주 사용하는 일반적인 형태의 함수
def 함수 이름(매개변수):
   <수행할 문장>
   ...
    return 결과값
  • 일반적인 함수의 예시

 

 2) 입력값이 없는 함수

  • 입력값이 없는 함수의 예시

 

 3) 결과값이 없는 함수

  • 결과값이 없는 함수의 예시

  • 만들어진 sum() 함수에 매개변수를 주어서 나오는 값인 "5 + 5 = 10"을 결과값으로 착각할 수도 있지만, "5 + 5 = 10"은 결과값이 아닌 sum() 함수 내 print() 함수의 결과가 출력된 것으로 결과값이 아니다.

  • sum() 함수에 결과값을 변수 result로 받은 후 출력해보면 거짓을 나타내는 자료형 "None"이 나오는 것을 확인할 수 있다.

 

 4) 매개변수 지정하여 호출

  • 인수를 따로 초기화하지 않고 생성하는 함수의 매개변수에 직접 초기화하여 함수를 호출할 수 있다.

 

4. *args와 **kwargs

 1) *args

  • 여러 개의 입력값을 받는 함수가 있으나, 몇 개의 입력값을 받을지 알 수 없는 경우 사용하는 방법
  • 매개변수 앞에 아스타 리스크"*"을 붙이면 입력값을 전부 모아서 튜플로 만들어준다.

  • *args는 임의로 정한 매개변수로 args는 관례적으로 사용하는 이름일 뿐, *ab, *abc 등 아무 이름이 와도 상관없다.
  • *을 응용한 함수 예

 

 2) *kwargs

  • 키워드 파라미터를 사용할 때는 매개변수 앞에 두 개의 아스타 리스크"*"를 붙여 사용한다.
  • 매개변수 이름 앞에 **을 붙이면 매개변수는 딕셔너리가 되고 모든 키(Key)와 값(Value) 형태의 결과값이 딕셔너리로 저장된다.

 

 3) 힌트 사용

  • 예로 한 개의 입력값을 받아 3개의 값을 리스트로 돌려주는 함수가 있다고 할 때, 해당 함수를 좀 더 명시적으로 나타낼 수 있다.

① 힌트를 사용하지 않은 모습
>>> def func_mul(x):

② 힌트를 사용한 모습
>>> def func_mul(x : int) -> list:
"정수형 매개변수 x를 리스트로 반환" 한다고 좀 더 명시적으로 나타낼 수 있는 모습

 

5. 람다(Lambda) 함수

 1) 람다(Lambda) 함수의 특징

  • 메모리가 절약되며, 가독성 향상 및 코드가 간결해진다.
  • 일반 함수는 객체 생성 → 리소스(메모리) 할당되지만, 람다(Lambda) 함수는 즉시 실행(Heap 초기화) → 메모리 초기화된다.
  • 보통 함수를 한 줄로 간결하게 만들 때나 def를 사용할 수 없는 곳에 사용한다.
  • lambda 예약어로 만든 함수는 return 명령어가 없어도 결과값을 반환해준다.

 

 2) 일반 함수와 람다(Lambda) 함수 비교

 

  ① 일반 함수

 

  ② 람다(Lambda) 함수

반응형