SKN/01. python

03. 함수

claovy☘️ 2025. 2. 18. 21:08

1. 함수

01. 함수란

💡특정 기능을 하기 위한 코드의 집합을 의미한다. 함수를 정의해 놓으면 해당 기능이 필요한 위치에서 함수를 호출하여 간편하게 사용할 수 있다.

 

02. 함수 표현식

  • def 키워드를 사용하여 함수를 정의
# 함수 선언과 호출 예시
def basic_function(#parameter):
    print("Hello World")

basic_function()    # Hello World

2. 매개변수

01. 파라미터

  • 함수에 전달받을 값의 변수명

02. 인자

  • 함수 호출 시 전달하는 값
  • 함수 인자를 보내는 방식은 다음 2가지가 있다.
    1. 위치 인자: 위치로 매칭하는 방법
    2. 키워드 인자: 매개변수 이름으로 매칭하는 방법
    • 이때, 위치 인자를 먼저 사용하면 뒤에 키워드 인자를 쓸 수 있다.
    • 단, 위치 인자와 키워드 인자를 함께 사용할 때 키워드 인자를 먼저 사용하는 것은 불가하다.
    def information(name, color):
          print(name + '의 최애 색상', color,  sep=' : ')
    
    # 위치 인자  
    information('tiger', 'orangered')    # tiger의 최애 색상 : orangered
    
    # 키워드 인자
    information(color='black', name='monkey') # monkey의 최애 색상 : black
    information('monkey', color='black')      # monkey의 최애 색상 : black
    # information(color='black', 'monkey')    # 불가능
    # information(name='monkey', 'black')     # 불가능
    

03. 반환값 (return)

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

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

05. lambda

💡람다는 일회성의 간단한 함수를 정의할 때 유용하게 사용할 수 있는, 함수를 보다 간단하고 쉽게 선언하는 방법이다. 매개변수로 함수를 전달해야 할 때, 함수 구문을 작성하는 것이 번거롭고 코드가 지나치게 길어지는 경우 사용한다. 즉, 함수 기능을 매개변수로 전달하는 코드를 더 효율적으로 작성할 수 있도록 한다.
  • lambda 사용 예시
변수명 = lambda (매개변수): (함수 실행 내용)

# 람다 기본

add = lambda x, y: x + y
print(add(3, 5))    # 8

# 람다 함수를 고차함수의 인자로 전달(배열 요소 처리)

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))    # [1, 4, 9, 16, 25]

람다 함수를 고차함수의 인자로 전달(배열 요소 필터링)

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))     # [2, 4, 6]

배열 정렬 기준을 람다 함수로 전달

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)]

 

06. 내장 함수

  • print
  • input
  • type
  • len
  • int, float, str, list, dict
  • range
  • min, max
  • sum
  • abs
  • round
  • map
  • filter
  • pow

'SKN > 01. python' 카테고리의 다른 글

05. 모듈&패키지  (0) 2025.02.24
04. 클래스와 상속  (1) 2025.02.24
02. 제어문(조건문, 반복문)  (0) 2025.02.18
01. 변수와 자료형  (0) 2025.02.18
00. 파이썬 개요  (0) 2025.02.18