AI/혼공학습단10기_Python

[혼공파] 4주차 과제 - 함수(기본 매개변수 vs 가변 매개변수)

moviewine 2023. 7. 29. 11:30

1. 핵심 내용
1) 함수 기본
  - 호출: 함수를 실행하는 행위
  - 매개변수: 함수 괄호 안에 넣는 값(숫자/문자열/변수 등)
  - 리턴 값: 함수의 결과
  - 가변 매개변수 함수: 매개변수를 원하는 만큼 받을 수 있는 함수
  - 기본 매개변수: 매개변수에 아무것도 넣지 않아도 들어가는 값

2) 함수 활용
  - 재귀함수(Recursion Function): 내부에서 자기 자신을 호출하는 함수
  - 메모화(Memoization): 한 번 계산한 값을 저장해 놓은 후, 이후 저장된 값을 재활용하는 기술
  - 조기 리턴(Early Returns): 함수의 흐름 중간에 return 키워드를 사용해 코드 들여쓰기를 줄이는 등 효과를 가져오는 기술
   예) 조기리턴을 활용해 코드를 가볍게 변환
def fibonacci(n):
    if n in dictionary:
        return dictionary[n] # 메모되어 있으면 메모된 값 리턴
    output = fibonacci(n-1) + fibonacci(n-2) # 메모되어 있지 않으면 값 계산
    dictionary[n] = output
    return output

3) 함수 고급
  - 튜플(tuple)은 리스트(list)와 비슷하지만 요소를 수정할 수 없는 파이썬의 특별한 문법. 괄호를 생략해서 다양하게 활용할 수 있음.
  - 람다(lambda)는 함수를 짧게 쓸 수 있는 파이썬의 특별한 문법
  - with구문은 블록을 벗어날 때 close()함수를 자동으로 호출해주는 구문



2. 범위 내부의 정수를 모두 더하는 함수 만들기

- "res"는 더해지는 모든 정수를 저장하는 변수

- start 매개변수에 지정되는 숫자 부터 end에 지정되는 숫자까지 계속 더하는 수식이 "res += i"이며, 여기서 end+1까지 지정하는 것은 범위가 end미만까지 지정되기 때문



3. 매개변수, 기본 매개변수, 가변 매개변수

1) 매개변수
  - 매개변수: 함수를 생성할 때 괄호 내부에 들어가는 식별자
  - 매개변수의 기본 형태는 아래와 같음.
def NAME(PARAM1, PARAM2, ....):
    xxxxx(내용)
- 함수를 호출할 때 매개변수를 넣지 않거나 더 많이 넣으면 type error 발생

2) 가변 매개변수
  - 가변 매개함수: print() 함수와 같이 매개변수를 원하는 만큼 받을 수 있는 함수
  - 가변 매개함수의 기본 형태는 아래와 같음.
def NAME(PARAM1, PARAM2, ..., *values):
    xxxx(내용)

  .예를 들면 아래와 같음.
def print_n_times(n, *values):
    for i in range(n):
        for value in values:
            print(value)
        print()
=> 함수 호출: print_n_times(3, "안녕", "대한", "민국")
=> 함수 결과: 안녕₩n대한₩n민국₩n₩n안녕₩n대한₩n민국₩n₩n안녕₩n대한₩n민국

  - 가변 매개변수 제약사항으로서, 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다는 점과 가변 매개변수는 하나만 사용할 수 있다는 점이 있음.

3) 기본 매개변수
  - 기본 매개변수: 가변 매개변수 뒤에도 올 수 있는 특수한 매개변수로서, "매개변수=값" 형태를 갖고 있고 이는 매개변수를 입력하지 않았을 때도 매개변수에 들어가는 default value임.
- 기본 매개변수 뒤에도 일반 매개변수가 올 수 없음.