Python 24일 코스 - Day 9: 함수 심화 (*args, **kwargs, lambda)

Day 9: 함수 심화

*args (가변 위치 인수)

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

print(total(1, 2, 3))       # 6
print(total(10, 20, 30, 40)) # 100

**kwargs (가변 키워드 인수)

def build_profile(**kwargs):
    return {k: v for k, v in kwargs.items()}

profile = build_profile(name="철수", age=25, city="서울")
print(profile)  # {'name': '철수', 'age': 25, 'city': '서울'}

인수 순서 규칙

def func(pos, *args, key="default", **kwargs):
    print(f"pos={pos}, args={args}, key={key}, kwargs={kwargs}")

func(1, 2, 3, key="custom", extra="value")
# pos=1, args=(2, 3), key=custom, kwargs={'extra': 'value'}

람다 함수

이름 없는 한 줄 함수입니다.

square = lambda x: x ** 2
add = lambda a, b: a + b

print(square(5))   # 25
print(add(3, 4))   # 7

고차 함수: map, filter, sorted

numbers = [1, 2, 3, 4, 5]

doubled = list(map(lambda x: x * 2, numbers))
print(doubled)  # [2, 4, 6, 8, 10]

evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens)  # [2, 4]

students = [("철수", 85), ("영희", 92), ("민수", 78)]
ranked = sorted(students, key=lambda s: s[1], reverse=True)
print(ranked)  # [('영희', 92), ('철수', 85), ('민수', 78)]

오늘의 연습문제

  1. 여러 개의 리스트를 받아 하나로 합치는 함수를 *args로 만드세요.
  2. maplambda를 사용하여 문자열 리스트의 각 단어 길이 리스트를 만드세요.
  3. filter로 딕셔너리 리스트에서 특정 조건을 만족하는 항목만 추출하세요.

이 글이 도움이 되었나요?