🐍 Python

파이썬 기초 : Functions(함수), Lambda Expressions(람다 표현식)

itstory(Booho) 2025. 1. 21. 12:54
728x90

함수란?

함수(Function)는 특정 작업을 수행하는 코드 블록입니다. 코드를 재사용 가능하게 만들고, 중복을 줄이며, 프로그램의 가독성을 높이는 데 도움을 줍니다.


함수 사용의 장점

코드 재사용성

한 번 정의한 함수는 여러 번 호출하여 사용할 수 있습니다. 동일한 작업을 여러 번 수행해야 할 때, 함수를 사용하면 코드의 중복을 줄이고 생산성을 높일 수 있습니다.

def greet(name):
    print(f"안녕하세요, {name}님!")

# 동일한 함수를 여러 번 호출
greet("홍길동")
greet("김철수")
greet("이영희")


가독성 향상

함수로 코드를 나누면 각 부분의 역할이 명확해져 코드가 더 읽기 쉬워집니다. 특히, 함수 이름으로 작업의 목적을 설명할 수 있어 가독성이 크게 향상됩니다.

def calculate_area(width, height):
    return width * height

area = calculate_area(5, 10)
print(f"면적: {area}")


유지보수 용이

함수를 사용하면 코드를 수정하거나 확장하기가 더 쉬워집니다. 문제가 생겼을 때, 함수 내부만 수정하면 동일한 작업을 수행하는 모든 코드가 자동으로 반영됩니다.

# 세금을 계산하는 함수
def calculate_tax(price, tax_rate=0.1):
    return price * tax_rate

# 함수 수정 전
print(calculate_tax(100))  # 출력: 10.0

# 함수 수정 후 (세율 변경)
def calculate_tax(price, tax_rate=0.15):
    return price * tax_rate

print(calculate_tax(100))  # 출력: 15.0

 

코드중복제거

함수를 사용하면 동일한 작업을 수행하는 코드를 반복해서 작성할 필요가 없습니다. 코드 중복은 유지보수의 큰 어려움 중 하나인데, 함수는 이를 방지합니다.

# 중복된 코드 사용 (비효율적):
print(10 * 20)
print(15 * 30)
print(25 * 40)
# 함수로 개선 (효율적):
def multiply(a, b):
    return a * b

print(multiply(10, 20))
print(multiply(15, 30))
print(multiply(25, 40))

 

함수 정의하기

파이썬에서 함수를 정의하려면 def 키워드를 사용합니다. 함수 이름, 매개변수(선택 사항), 그리고 수행할 작업을 포함합니다.

 

기본문법

def 함수이름(매개변수1, 매개변수2, ...):
    실행할 코드
    return 반환값

 

  • def: 함수를 정의할 때 사용하는 키워드.
  • 함수이름: 함수의 이름으로, 작업의 목적을 나타내야 합니다.
  • 매개변수: 함수가 입력받을 데이터 (선택 사항).
  • 실행할 코드: 함수가 호출될 때 실행될 명령들.
  • return: 함수의 실행 결과를 반환 (선택 사항).

 

간단한 함수 정의

def greet():
    print("안녕하세요!")
    
    greet()
# 출력: 안녕하세요!

 

매개변수가 있는 함수

def greet(name):
    print(f"안녕하세요, {name}님!")

greet("홍길동")
# 출력: 안녕하세요, 홍길동님!

반환값이 있는 함수

함수는 return 키워드를 사용하여 결과값을 반환할 수 있습니다.

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


result = add(5, 3)
print(result)
# 출력: 8


매개변수와 기본값

def greet(name="친구"):
    print(f"안녕하세요, {name}님!")

greet()
# 출력: 안녕하세요, 친구님!

greet("김철수")
# 출력: 안녕하세요, 김철수님!

여러 매개변수 처리

튜플 형태로 처리
def add_all(*args):
    return sum(args)

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


딕셔너리 형태로 처리
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="홍길동", age=30, job="개발자")
# 출력:
# name: 홍길동
# age: 30
# job: 개발자

람다 표현식이란?

람다 표현식은 간단한 함수 정의를 한 줄로 작성할 수 있는 파이썬의 문법입니다. 일반적으로 한 번만 사용되는 간단한 함수를 정의할 때 유용합니다.


기본 문법

lambda 매개변수1, 매개변수2, ... : 표현식
  • lambda: 람다 표현식을 시작하는 키워드입니다.
  • 매개변수: 함수가 받을 입력값입니다. 여러 개를 콤마로 구분할 수 있습니다.
  • 표현식: 매개변수를 사용해 계산될 반환값입니다.

람다 표현식은 return 키워드 없이 항상 결과값을 반환합니다.



람다 표현식 vs 일반 함수

일반 함수

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

result = add(5, 3)
print(result)  # 출력: 8

람다 표현식

add = lambda a, b: a + b

result = add(5, 3)
print(result)  # 출력: 8

람다 표현식은 def 키워드 대신 lambda를 사용하고, 반환값을 간단하게 표현할 수 있습니다.

 

 

Python의 Built-in Functions

Built-in Functions 1 Built-in Functions 2 Built-in Functions 3 Built-in Functions 4 Built-in Functions 5
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

 

 

CPU가 함수를 실행하는 방식

CPU는 **스택(Stack)**이라는 구조를 사용하여 함수를 호출하고 실행 상태를 관리합니다. 다음은 주요 단계입니다

  1. 함수 호출 시 스택에 추가(Push)
    함수가 호출되면, 함수의 실행 정보를 스택에 저장합니다.
  2. 함수 실행
    CPU는 스택의 가장 위에 있는 함수의 명령을 실행합니다.
  3. 함수 종료 시 스택에서 제거(Pop)함수가 실행을 마치면, 스택에서 해당 함수 정보를 제거하고 호출한 위치로 돌아갑니다.

728x90