파이썬 기초

파이썬 - 함수의 이해

데이터_박과장 2023. 10. 11. 21:42

 

함수란 무엇인가?

함수는 재사용 가능한 코드 블록으로, 특정 작업을 수행하기 위해 설계되었습니다. 함수는 입력을 받아 작업을 수행하고 결과를 반환할 수 있습니다.
함수를 사용하는 이유는 무엇일까?

함수를 사용하는 이유는 다음과 같습니다:
코드 재사용: 동일한 작업을 반복할 필요 없이 함수를 호출하여 사용할 수 있습니다.
모듈화: 프로그램을 함수로 나누어 모듈화하면 코드 관리가 용이해집니다.
가독성: 함수는 코드를 논리적으로 구성하고 가독성을 향상시킵니다.
파이썬 함수의 구조

함수는 def 키워드를 사용하여 정의하며, 함수 이름, 매개변수, 콜론으로 시작합니다. 함수 내용은 들여쓰기된 블록으로 구성됩니다.
예시 코드:

def my_function(parameter1, parameter2):
    # 함수 내용



매개변수와 인수

매개변수는 함수 정의 시에 사용하는 변수 이름이고, 인수는 함수 호출 시에 전달되는 실제 값입니다.
예시 코드:

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

greet("Alice")  # "Alice"가 인수로 전달됨


입력값과 리턴값에 따른 함수의 형태

함수는 입력값과 리턴값의 유무에 따라 다양한 형태를 가질 수 있습니다.
a. 일반적인 함수: 입력값을 받아 처리하고 결과를 반환하는 함수.

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


b. 입력값이 없는 함수: 입력값 없이 작업을 수행하는 함수.

def say_hello():
    print("Hello!")



c. 리턴값이 없는 함수: 작업을 수행하고 결과를 반환하지 않는 함수.

def print_sum(a, b):
    result = a + b
    print(result)



d. 입력값도, 리턴값도 없는 함수: 입력값 없이 작업을 수행하고 결과도 반환하지 않는 함수.

매개변수를 지정하여 호출하기

함수를 호출할 때 매개변수를 지정하여 순서와 관계없이 값을 전달할 수 있습니다.
예시 코드:

def greet(name, age):
    print(f"Hello, {name}! You are {age} years old.")

greet(age=30, name="Alice")  # 매개변수를 지정하여 호출



입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?

*args를 사용하여 가변 인수를 처리할 수 있습니다. 이를 통해 임의의 개수의 인수를 함수에 전달할 수 있습니다.
예시 코드:

def add(*args):
    result = 0
    for num in args:
        result += num
    return result

total = add(1, 2, 3, 4, 5)  # 임의의 개수의 인수 전달



여러 개의 입력값을 받는 함수 만들기

함수는 여러 개의 매개변수를 정의하여 여러 값을 입력받을 수 있습니다.
예시 코드:

def calculate(a, b, c):
    return a + b + c

result = calculate(1, 2, 3)



키워드 매개변수, kwargs

**kwargs를 사용하여 키워드 매개변수를 처리할 수 있습니다. 이를 통해 딕셔너리 형태로 인수를 전달할 수 있습니다.
예시 코드:

def person_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

person_info(name="Alice", age=30, city="New York")



함수의 리턴값은 언제나 하나이다

함수는 하나의 리턴값만 반환하며, 여러 값을 반환하기 위해 리스트, 튜플, 딕셔너리 등을 활용할 수 있습니다.
매개변수에 초깃값 미리 설정하기

함수의 매개변수에 기본 값을 설정하여 인수를 전달하지 않을 경우 기본 값을 사용할 수 있습니다.
예시 코드:

def greet(name, message="Hello"):
    print(f"{message}, {name}!")

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



함수 안에서 선언한 변수의 효력 범위

함수 내에서 선언한 변수의 범위는 함수 내에서만 유효하며, 함수 밖에서 선언한 변수와 다른 변수로 간주됩니다.
함수 안에서 함수 밖의 변수를 변경하는 방법
a. return 사용하기: 함수 내에서 값을 계산하고 return 키워드를 사용하여 외부로 반환합니다.
b. global 명령어 사용하기: 함수 내에서 함수 밖의 변수를 직접 수정합니다.

lambda 예약어

lambda 예약어를 사용하여 간단한 익명 함수(람다 함수)를 생성할 수 있습니다. 주로 함수의 인수로 사용됩니다.
예시 코드:

add = lambda a, b: a + b
result = add(3, 5)  # 8

 

람다(lambda) 함수 추가설명


람다(lambda) 함수는 파이썬에서 간단한 익명 함수를 생성하는 방법을 제공합니다. 람다 함수는 lambda 예약어를 사용하여 정의하며, 주로 작은 함수를 정의할 때 사용됩니다.

람다 함수의 일반적인 구조는 다음과 같습니다:

lambda 매개변수: 표현식

 

여기서 매개변수는 람다 함수의 입력 값이고, 표현식은 입력 값을 가공하여 결과를 반환하는 표현식입니다.

람다 함수의 사용 사례와 주의할 점:

사용 사례:

단순한 함수 필요할 때: 람다 함수는 간단한 연산을 수행하고자 할 때 유용합니다. 특히 함수를 한 번 사용하고 더 이상 필요하지 않은 경우에 유용합니다.

예시 1: 두 숫자를 더하는 간단한 함수

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



예시 2: 리스트의 요소를 정렬할 때 사용되는 sorted 함수의 key 인수에 람다 함수를 활용

data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}, {'name': 'Charlie', 'age': 35}]
sorted_data = sorted(data, key=lambda x: x['age'])


고차 함수와 함께 사용: 람다 함수는 고차 함수와 조합하여 사용될 때 강력한 기능을 제공합니다. 고차 함수는 함수를 인수로 받거나 함수를 반환하는 함수를 말합니다.

예시: filter 함수와 람다 함수를 사용하여 리스트에서 조건에 맞는 요소만 필터링

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))


주의할 점:

람다 함수의 한계: 람다 함수는 단순한 함수에만 사용해야 합니다. 복잡한 함수나 여러 줄의 코드를 포함하는 함수를 람다로 정의하면 코드의 가독성이 떨어지고 유지보수가 어려워집니다.

변수 범위: 람다 함수는 자신이 정의된 범위 내에서만 사용할 수 있는 변수를 참조할 수 있습니다. 이를 클로저(closure)라고 합니다.

가독성: 람다 함수는 간단한 경우에만 사용해야 하며, 함수의 이름과 문서화가 빠져 있어 가독성이 떨어질 수 있습니다. 따라서 의미 있는 함수일 경우에는 명시적인 함수 정의를 고려해야 합니다.

람다 함수는 파이썬에서 코드를 간결하게 작성할 때 유용하지만, 복잡한 작업에는 일반 함수를 사용하는 것이 더 좋을 수 있습니다.

 

 

'파이썬 기초' 카테고리의 다른 글

파일 읽고쓰기  (0) 2023.10.11
사용자 입력&출력  (0) 2023.10.11
제어문 - if, while, for  (0) 2023.10.11
자료형 - 집합, 불 자료형  (0) 2023.10.11
자료형 - 리스트, 딕셔너리, 튜플  (0) 2023.10.11