Python

[Python] 함수

daze1002 2025. 2. 17. 01:58
반응형

01. 함수 (function)

01-01. 함수 개요

함수란

함수 표현식

  • def 키워드를 사용하여 함수를 정의한다.

  • 이때, 함수 이름 뒤에 소괄호와 콜론을 작성하며 함수에서 실행할 내용은 "반드시" 들여쓰기 한다.

      def 함수명():
          (함수가 실행하는 코드 내용)

01-02. 매개변수

파라미터

  • 함수 생성 시 함수명 옆에 붙이는 소괄호 안에 매개변수로 전달받을 값의 변수명을 넣을 수 있다. 이를 파라미터라고 한다.
def sample(파라미터):
    print('hello')
  • 함수를 정의할 때 매개변수의 기본값을 지정해 줄 수 있다.

    함수 호출 시 인자를 보내지 않으면 함수 선언부에서 미리 지정한 기본값을 사용하여 함수를 실행한다.

      def sample(name='daze'):
          print(name)

인자

  • 함수 호출 시 함수명에 소괄호를 붙여 호출하며, 이때 소괄호 안에 전달하는 값은 인자라고 한다.
  • 함수 인자를 보내는 방식은 다음 2가지가 있다.
    1. 위치 인자: 위치로 매칭하는 방법
    2. 키워드 인자: 매개변수 이름으로 매칭하는 방법
    • 이때, 위치 인자를 먼저 사용하면 뒤에 키워드 인자를 쓸 수 있다.
    • 단, 위치 인자와 키워드 인자를 함께 사용할 때 키워드 인자를 먼저 사용하는 것은 불가하다.
def sample(name='daze'):
    print(name)

 sample('jordan')      #위치인자
 sample(name='jordan') # 키워드 인자

01-03. 반환값

return

  • 함수 블럭 내부에서 return 키워드를 만나면 함수의 작동이 중단된다.
  • return 키워드 뒤에 변수 또는 값이 오면, 해당 자료를 함수 호출 위치에 반환하며 중단된다.
def sample():
    a = 4
    .
    .
    .
    return a

01-04. 패키지와 언패키지

패키징

  • 위치 인자가 많을 때 *을 붙여서 패키징하여 하나의 객체로 처리할 수 있다.

      def add_many(*args): 
          result = 0
    
          for i in args: 
              result = result + i
    
          return result 
    
      add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)    # 55
  • 키워드 인자인 경우에는 * 두 개(**)를 붙여서 작성할 수 있다.

    • (키: 값으로 넣을 때)

언패키징

  • 패키지와 반대되는 개념으로 여러 개의 객체를 포함하는 하나의 객체를 풀어준다.

      def sum(a, b, c):
          return a + b + c
    
      numbers = [1, 2, 3]
      # sum(numbers)    # 배열로 하나만 넘겨주면 에러 발생
    
      print(sum(*numbers))    # 6

01-05. 람다 (lambda)

람다란

람다 표현식

변수명 = lambda (매개변수): (함수 실행 내용)

람다 사용 예시

  1. 람다 기본

     add = lambda x, y: x + y
     print(add(3, 5))    # 8
  2. 람다 함수를 고차함수의 인자로 전달 (배열 요소 처리)

     numbers = [1, 2, 3, 4, 5]
     squared_numbers = map(lambda x: x**2, numbers)
     print(list(squared_numbers))    # [1, 4, 9, 16, 25]
  3. 람다 함수를 고차함수의 인자로 전달 (배열 요소 필터링)

     numbers = [1, 2, 3, 4, 5, 6]
     even_numbers = filter(lambda x: x % 2 == 0, numbers)
     print(list(even_numbers))     # [2, 4, 6]
  4. 배열 정렬 기준을 람다 함수로 전달

     points = [(1, 2), (3, 1), (5, -1)]
     sorted_points = sorted(points, key=lambda x: x[1])
     print(sorted_points)    # [(5, -1), (3, 1), (1, 2)]

함수의 종류

  • 파라미터와 반환값에 따른 종류

    1. param, no return value
    2. param, return value
    3. no param, no return value
    4. no param, return value
  • 함수 호출 방식에 따른 종류

    1. Call By Value: 기본값 형식을 인수로 전달하는 경우, 단순 값복사로 처리된다.

      # 숫자, 문자열 등 immutable 객체형에 대하여
      def f1(b):
       b = 200
      
      a = 100
      f1(a)    # 매개변수 b에는 a의 값이 복사되어서 담긴다. a에 대한 영향이 없다.
      print(a) 
      def f2(b):
       b = "def"
      a = "abc"
      f2(a)
      print(a) 
      # 튜플도 immutable
      def f3(t):
       t = (4,5,6)
      a = (1,2,3)
      f3(a)
      print(a) 
    2. Call By Reference

      def f4(l):
       l[0] = 100
      
      l = [1,2,3]
      f4(l)
      print(l)
      def f5(d):
       d['a'] = 100
      
      d = {'a':1, 'b':2}
      f5(d)
      print(d)

01-06. 내장 함수

  1. print() : 콘솔 출력 기능을 하는 함수
  2. input() : 콘솔을 통해 사용자 입력을 받아 문자열로 반환하는 함수
  3. type() : 인자로 전달된 값의 자료형을 반환하는 함수
  4. len() : 인자로 전달된 시퀀스 자료형의 요소의 갯수(길이)를 반환하는 함수
  5. int(), float(), str(), list(), dict() : 인자로 전달된 자료형을 특정 자료형으로 형 변환하여 반환하는 함수
  6. range() : 전달받은 인자에 따라 일정 범위의 숫자 시퀀스를 생성하여 반환하는 함수
  7. min(), max() : 인자로 전달된 시퀀스의 요소 중 가장 크거나 작은 값을 반환하는 함수
  8. sum() : 인자로 전달된 시퀀스 내 모든 요소의 합계를 반환하는 함수
  9. abs() : 절댓값을 반환하는 함수
  10. round() : 인자로 전달된 숫자를 반올림하는 함수
  11. map() : 함수와 시퀀스를 인자로 받아, 시퀀스의 각 요소에 함수를 적용한 결과를 반환하는 함수
  12. filter() : 함수와 시퀀스를 인자로 받아, 시퀀스에서 함수의 조건을 만족하는 요소만 반환하는 함수
  13. pow() : 인자의 첫 번째 숫자를 두 번째 숫자로 거듭 제곱한 값을 반환하는 함수