본문 바로가기

카테고리 없음

패스트캠퍼스 환급챌린지 9일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기

반응형

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

Ch 9. 함수란 무엇일까요?

파이썬 함수의 모든 것

파이썬을 배우다 보면 반복되는 코드를 계속 복사-붙여넣기 하고 있는 자신을 발견할 때가 있습니다. 바로 이럴 때, 우리를 구원해 줄 마법 같은 도구가 바로 함수(Function)입니다. 함수는 특정 작업을 수행하는 코드 덩어리에 이름을 붙여두고, 필요할 때마다 호출해서 사용할 수 있게 해주는 기능입니다.

이번 글에서는 함수가 왜 필요한지부터 시작해서, 직접 함수를 만들고 활용하는 방법까지 차근차근 알아보겠습니다.

1. 함수, 도대체 왜 사용해야 할까요?

커피를 마시고 싶을 때마다 원두를 갈고, 물을 끓이고, 필터를 내리는 모든 과정을 직접 하진 않죠. 우리는 '커피 머신'의 버튼을 누릅니다. 여기서 커피 머신이 바로 함수의 역할입니다.

  • 재사용성: 한번 잘 만들어둔 함수는 필요할 때마다 몇 번이고 다시 불러 쓸 수 있습니다.
  • 가독성: 복잡한 코드를 의미 있는 단위의 함수로 나누면, 전체 코드의 흐름을 이해하기 훨씬 쉬워집니다. prepare_data(), analyze_data(), visualize_results()처럼요.
  • 유지보수: 특정 기능에 수정이 필요할 때, 해당 함수만 고치면 되므로 유지보수가 매우 편리해집니다.

2. 함수의 기본: 정의하고 호출하기

함수를 만드는 것을 '정의(Define)'한다고 하고, 사용하는 것을 '호출(Call)'한다고 합니다.

함수 정의하기

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

# '안녕하세요!'를 출력하는 가장 간단한 함수
def say_hello():
    print("안녕하세요! 파이썬 함수에 오신 것을 환영합니다.")

함수 호출하기

정의된 함수의 이름을 적고 괄호()를 붙여 호출합니다.

# 위에서 정의한 함수를 호출
say_hello()

# 결과:
# 안녕하세요! 파이썬 함수에 오신 것을 환영합니다.

3. 정보를 전달하는 방법: 매개변수(Parameter)와 인수(Argument)

함수에 데이터를 전달하여, 그 데이터에 따라 다른 작업을 수행하게 만들 수 있습니다.

  • 매개변수(Parameter): 함수를 정의할 때, 괄호 안에 선언하는 변수입니다. (함수가 받을 데이터의 '자리표')
  • 인수(Argument): 함수를 호출할 때, 괄호 안에 전달하는 실제 값입니다. (자리에 들어갈 '실제 데이터')
# name이라는 매개변수를 받는 함수 정의
def greet(name):
    print(f"{name}님, 환영합니다!")

# 함수를 호출하며 '앨리스'와 '밥'이라는 인수를 전달
greet("앨리스")
greet("밥")

# 결과:
# 앨리스님, 환영합니다!
# 밥님, 환영합니다!

4. 결과를 돌려받는 방법: return

함수가 어떤 작업을 수행한 후, 그 결과값을 돌려주게 하려면 return을 사용합니다. return을 만나면 함수는 즉시 실행을 종료하고 값을 반환합니다.

# 두 숫자를 더한 결과를 반환하는 함수
def add(a, b):
    result = a + b
    return result

# 함수를 호출하고, 반환된 값을 sum_result 변수에 저장
sum_result = add(10, 5)
print(f"10과 5를 더한 결과는 {sum_result}입니다.")

# 결과:
# 10과 5를 더한 결과는 15입니다.

Tip! return이 없는 함수는 보이지 않게 None이라는 특별한 값을 반환합니다.

5. 똑똑하게 매개변수 사용하기 (고급 팁)

기본값(Default) 매개변수

매개변수에 기본값을 설정해두면, 함수 호출 시 해당 인수를 생략할 수 있습니다.

def greet_default(name, message="안녕하세요"):
    print(f"{name}님, {message}.")

greet_default("찰리") # message 인수를 생략 -> 기본값 "안녕하세요" 사용
greet_default("데이브", "반갑습니다") # message 인수를 전달 -> "반갑습니다" 사용

# 결과:
# 찰리님, 안녕하세요.
# 데이브님, 반갑습니다.

키워드(Keyword) 인수

인수의 순서가 헷갈릴 때, 매개변수 이름을 직접 지정하여 값을 전달할 수 있습니다. 코드의 가독성이 높아집니다.

def get_profile(name, age, country):
    print(f"이름: {name}, 나이: {age}, 국가: {country}")

# 순서대로 전달
get_profile("Eve", 30, "한국")

# 키워드 인수로 순서 상관없이 전달
get_profile(country="미국", name="Frank", age=25)

가변 인수 (*args, **kwargs)

함수가 몇 개의 인수를 받을지 모를 때 사용합니다.

  • *args: 여러 개의 인수를 **튜플(Tuple)**로 받습니다.
  • **kwargs: 여러 개의 키워드 인수를 **딕셔너리(Dictionary)**로 받습니다.
# *args 예시: 모든 인수를 더하기
def sum_all(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

print(sum_all(1, 2, 3, 4, 5)) # 결과: 15

# **kwargs 예시: 프로필 정보 출력하기
def print_profile(**user_info):
    for key, value in user_info.items():
        print(f"{key}: {value}")

print_profile(name="Grace", age=28, job="Developer", country="캐나다")

람다(Lambda) 함수란?

람다 함수는 이름이 없는 '익명 함수(Anonymous Function)'입니다. def 키워드를 사용하여 정식으로 함수를 정의할 필요 없이, 한 줄로 간단한 함수를 만들고 싶을 때 사용합니다.

기본 문법

lambda 매개변수1, 매개변수2, ... : 표현식
  • lambda 키워드로 시작합니다.
  • 매개변수들을 나열하고 콜론(:)을 찍습니다.
  • 콜론 뒤에는 이 매개변수들을 사용하여 계산하고 반환할 하나의 표현식이 옵니다. return 키워드는 사용하지 않아도 표현식의 결과가 자동으로 반환됩니다.

일반 함수 vs 람다 함수

예를 들어, 두 숫자를 더하는 간단한 함수를 비교해 보겠습니다.

1. 일반 함수 (def 사용)

def add(x, y):
    return x + y

result = add(10, 20)
print(result)  # 30

2. 람다 함수 사용

# 람다 함수를 변수에 할당
add_lambda = lambda x, y: x + y

result = add_lambda(10, 20)
print(result)  # 30

보시는 것처럼, 간단한 기능의 경우 람다를 사용하면 코드를 훨씬 간결하게 표현할 수 있습니다.

람다 함수는 언제 사용할까요?

람다 함수는 주로 다른 함수의 **인수(argument)**로 함수를 전달해야 할 때 매우 유용하게 사용됩니다. 대표적인 예시는 map(), filter(), sorted() 같은 내장 함수들입니다.

예시: map() 함수와 함께 사용하기

map(함수, 리스트)는 리스트의 각 요소에 함수를 적용하여 새로운 결과를 만들어주는 함수입니다.

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

# 각 숫자를 제곱하는 람다 함수를 map에 전달
squared_numbers = list(map(lambda x: x * x, numbers))

print(squared_numbers)
# 결과: [1, 4, 9, 16, 25]

만약 람다를 쓰지 않았다면, 아래처럼 별도의 def 함수를 만들어야 합니다.

def square(x):
    return x * x

squared_numbers = list(map(square, numbers))

이처럼 한 번만 쓰고 말 간단한 함수를 위해 def로 정식 함수를 정의하는 것이 번거로울 때, 람다를 사용하면 코드가 훨씬 깔끔하고 직관적이 됩니다.

 

오늘의 실습

 

 

#패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완

https://fastcampus.info/4n8ztzq

 

(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스

초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!

fastcampus.co.kr

 

반응형