본문 바로가기
Python 문법/Python 기본 문법(3.10 기준)

[python3.10 기본] 5. 함수

by cogito21_python 2024. 7. 1.
반응형

5.1 함수 정의 및 호출

함수는 def 키워드를 사용하여 정의합니다.

 

함수 정의

def greet(name):
    return f"Hello, {name}!"

함수 호출

print(greet("Alice"))

5.2 매개변수와 인자

함수는 매개변수를 통해 데이터를 전달받을 수 있으며, 호출 시 인자를 통해 값을 전달합니다.

위치 인자: 순서대로 값을 전달합니다.

def add(a, b):
    return a + b

print(add(2, 3))  # 5

키워드 인자: 이름을 지정하여 값을 전달합니다.

def add(a, b):
    return a + b

print(add(a=2, b=3))  # 5
print(add(b=3, a=2))  # 5

기본값 인자: 기본값을 지정할 수 있습니다.

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

print(greet("Alice"))  # Hello, Alice!
print(greet("Alice", "Hi"))  # Hi, Alice!

가변 인자: 가변 개수의 인자를 받을 수 있습니다.

- 가변 위치 인자 (*args)

def add(*args):
    return sum(args)

print(add(1, 2, 3))  # 6
print(add(1, 2, 3, 4, 5))  # 15

- 가변 키워드 인자 (**kwargs)

def greet(**kwargs):
    return f"{kwargs.get('greeting', 'Hello')}, {kwargs.get('name', 'Guest')}!"

print(greet(name="Alice", greeting="Hi"))  # Hi, Alice!
print(greet(name="Alice"))  # Hello, Alice!

5.3 반환값

함수는 return 키워드를 사용하여 값을 반환합니다.

def multiply(a, b):
    return a * b

result = multiply(3, 4)
print(result)  # 12

5.4 재귀 함수

재귀 함수는 자기 자신을 호출하는 함수입니다. 보통 재귀는 종료 조건이 필요합니다.

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5))  # 120

5.5 lambda 함수

lambda 함수는 익명 함수로, lambda 키워드를 사용하여 간단한 함수를 정의할 수 있습니다.

# 일반 함수
def add(a, b):
    return a + b

# lambda 함수
add = lambda a, b: a + b

print(add(2, 3))  # 5

5.6 함수 어노테이션

함수 어노테이션은 함수 매개변수와 반환값의 타입 정보를 제공하는 기능입니다. 어노테이션은 실제 동작에는 영향을 미치지 않으며, 코드의 가독성과 유지보수성을 높이는 데 사용됩니다.

def add(a: int, b: int) -> int:
    return a + b

print(add(2, 3))  # 5

예제 함수들

최대값 찾기

def find_max(numbers):
    max_num = numbers[0]
    for num in numbers:
        if num > max_num:
            max_num = num
    return max_num

print(find_max([1, 2, 3, 4, 5]))  # 5

리스트 평탄화 (중첩 리스트를 하나의 리스트로 변환)

def flatten(nested_list):
    result = []
    for element in nested_list:
        if isinstance(element, list):
            result.extend(flatten(element))
        else:
            result.append(element)
    return result

print(flatten([1, [2, [3, 4], 5], 6]))  # [1, 2, 3, 4, 5, 6]

 

반응형