안녕하세요 파이썬 강좌 7번째 함수에 대해서 강좌를 시작하도록하겠습니다.

함수는 다양한 분야에 쓰이며 정말 많이사용하는데요 그래서 함수를 어떻게 만들고 이떻게 사용하는지를 알아두는것이 중요합니다. 함수의 기본 개념을 잘 잡아둬야 나중에 다른 강좌를 보아도 도움이 될겁니다.

파이썬강좌7함수

함수란 무엇인가요?

함수를 설명하기 전에 믹서기를 생각해봅시다. 믹서기에 과일을 넣고 갈아서 과일 주스를 만듭니다. 이때 믹서기에 넣는 과일은 ‘입력’이고, 믹서기에서 나온 과일 주스는 ‘출력(결과값)’입니다. 함수도 이와 비슷합니다. 입력값을 가지고 어떤 일을 수행한 다음 결과물을 내는 것이 함수의 역할입니다.

파이썬(python) 강좌 7 함수

프로그래밍에서 함수는 중요합니다. 반복되는 코드를 함수로 만들어 효율적으로 관리하고, 프로그램 흐름을 명확히 볼 수 있습니다. 함수를 잘 사용하는 사람은 능력 있는 프로그래머입니다.

함수의 사용 이유

프로그래밍을 하다 보면 반복해서 같은 내용을 작성할 때가 있습니다. 이때 함수가 필요합니다. 반복되는 코드 부분을 함수로 묶어, 필요한 입력값을 주었을 때 원하는 결과값을 돌려받는 것이 현명합니다.

또한, 함수를 사용하면 프로그램의 흐름을 명확히 볼 수 있습니다. 입력한 값이 여러 함수를 거쳐 원하는 결과값을 내는 것을 볼 수 있어 프로그램의 구조를 이해하기 쉽게 만듭니다.

파이썬 함수의 구조

파이썬 함수는 다음과 같은 구조를 가집니다

함수란 무엇인가요?

함수를 설명하기 전에 믹서기를 생각해봅시다. 믹서기에 과일을 넣고 갈아서 과일 주스를 만듭니다. 이때 믹서기에 넣는 과일은 ‘입력’이고, 믹서기에서 나온 과일 주스는 ‘출력(결과값)’입니다. 함수도 이와 비슷합니다. 입력값을 가지고 어떤 일을 수행한 다음 결과물을 내는 것이 함수의 역할입니다.

프로그래밍에서 함수는 중요합니다. 반복되는 코드를 함수로 만들어 효율적으로 관리하고, 프로그램 흐름을 명확히 볼 수 있습니다. 함수를 잘 사용하는 사람은 능력 있는 프로그래머입니다.

함수의 사용 이유

프로그래밍을 하다 보면 반복해서 같은 내용을 작성할 때가 있습니다. 이때 함수가 필요합니다. 반복되는 코드 부분을 함수로 묶어, 필요한 입력값을 주었을 때 원하는 결과값을 돌려받는 것이 현명합니다.

또한, 함수를 사용하면 프로그램의 흐름을 명확히 볼 수 있습니다. 입력한 값이 여러 함수를 거쳐 원하는 결과값을 내는 것을 볼 수 있어 프로그램의 구조를 이해하기 쉽게 만듭니다.

파이썬 함수의 구조

파이썬 함수는 다음과 같은 구조를 가집니다

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

이 함수는 두 개의 입력값을 받아 더한 결과값을 돌려줍니다. return은 함수의 결과값을 돌려주는 명령어입니다. 다음과 같이 사용할 수 있습니다

a = 3
b = 4
c = add(a, b)
print(c)  # 출력: 7

매개변수와 인수

매개변수(parameter)와 인수(argument)는 혼용되는 용어입니다. 매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고, 인수는 함수를 호출할 때 전달하는 입력값을 의미합니다.

def add(a, b):  # a와 b는 매개변수
    return a + b

print(add(3, 4))  # 3과 4는 인수

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

함수는 입력값과 결과값의 존재 유무에 따라 네 가지 유형으로 나뉩니다.

1. 일반적인 함수

입력값과 결과값이 있는 함수입니다.

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

사용 예

result = add(3, 4)
print(result)  # 출력: 7

2. 입력값이 없는 함수

입력값 없이 결과값만 있는 함수입니다.

def say():
    return 'hi'

a = say()
print(a)  # 출력: hi

3. 결과값이 없는 함수

결과값이 없는 함수는 호출해도 돌려주는 값이 없습니다.

def add(a, b):
    print(f"{a}, {b}의 합은 {a + b}입니다.")

add(3, 4)  # 출력: 3, 4의 합은 7입니다.

4. 입력값과 결과값이 없는 함수

입력값과 결과값이 없는 함수입니다.

def say():
    print('hi')

say()  # 출력: hi

매개변수 지정해서 호출하기

함수를 호출할 때 매개변수를 지정할 수 있습니다.

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

result = add(a=3, b=7)
print(result)  # 출력: 10

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

입력값이 몇 개가 될지 모를 때

입력값이 몇 개가 될지 모를 때는 *args를 사용하여 여러 개의 입력값을 받을 수 있습니다.

def add_many(*args):
    result = 0
    for i in args:
        result += i
    return result

result = add_many(1, 2, 3)
print(result)  # 출력: 6

result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(result)  # 출력: 55

또는 다른 매개변수와 함께 사용할 수 있습니다.

def add_mul(choice, *args):
    if choice == "add":
        result = sum(args)
    elif choice == "mul":
        result = 1
        for i in args:
            result *= i
    return result

result = add_mul('add', 1, 2, 3, 4, 5)
print(result)  # 출력: 15

result = add_mul('mul', 1, 2, 3, 4, 5)
print(result)  # 출력: 120

키워드 파라미터 kwargs

키워드 파라미터는 매개변수 앞에 **를 붙여 사용합니다.

def print_kwargs(**kwargs):
    print(kwargs)

print_kwargs(a=1)  # 출력: {'a': 1}
print_kwargs(name='foo', age=3)  # 출력: {'name': 'foo', 'age': 3}

**kwargs는 입력값을 딕셔너리 형태로 저장합니다.

이처럼 파이썬에서 함수는 다양하고 유연하게 사용할 수 있습니다. 다음 강의에서는 함수의 더 깊은 내용과 파일 입출력에 대해 알아보겠습니다.


함수의 결괏값은 언제나 하나라는 개념은 이해하기 쉽지만, 프로그래밍을 처음 접하는 사람에게는 조금 혼란스러울 수 있습니다. 특히 파이썬에서의 함수 반환값은 여러 개의 값처럼 보이지만 사실 하나의 튜플로 반환된다는 점을 명확히 이해하는 것이 중요합니다.

다음은 파이썬의 함수 반환값과 관련된 개념을 정리한 것입니다:

함수의 결괏값은 하나

파이썬에서 함수는 여러 개의 값을 반환할 수 있는 것처럼 보이지만 실제로는 하나의 값만 반환합니다. 이 값이 튜플인 경우, 여러 개의 값을 포함할 수 있습니다.

def add_and_mul(a, b):
    return a + b, a * b

result = add_and_mul(3, 4)
print(result)  # (7, 12)

이 예제에서 add_and_mul 함수는 두 개의 값을 반환하는 것처럼 보이지만, 실제로는 (a + b, a * b)라는 하나의 튜플을 반환합니다. 따라서 result 변수에는 (7, 12)라는 튜플이 저장됩니다.

다중 반환값 받기

튜플을 여러 변수에 나누어 저장하고 싶다면 다음과 같이 할 수 있습니다

result1, result2 = add_and_mul(3, 4)
print(result1)  # 7
print(result2)  # 12

이 방법을 사용하면 튜플의 각 요소를 개별 변수에 할당할 수 있습니다.

함수의 반환은 한 번만

함수 내에서 return 문을 여러 번 사용할 수 없다는 점도 중요합니다. 다음과 같은 코드는 제대로 작동하지 않습니다

def add_and_mul(a, b):
    return a + b
    return a * b  # 이 줄은 실행되지 않습니다.

result = add_and_mul(2, 3)
print(result)  # 5

위 코드에서 두 번째 return 문은 실행되지 않습니다. 함수는 첫 번째 return 문을 만나는 순간 실행을 멈추고 값을 반환합니다.

조건에 따라 함수 종료

특정 조건에서 함수를 즉시 종료하고 싶다면, return 문을 단독으로 사용할 수 있습니다

def say_nick(nick):
    if nick == "바보":
        return
    print(f"나의 별명은 {nick} 입니다.")

say_nick("야호")  # 나의 별명은 야호입니다.
say_nick("바보")  # 아무 것도 출력되지 않습니다.

이 예제에서 say_nick 함수는 ‘바보’라는 입력을 받으면 아무 것도 출력하지 않고 즉시 종료됩니다.

함수 매개변수의 기본값

함수 매개변수에 기본값을 설정할 수 있습니다. 이는 함수 호출 시 특정 인수를 생략할 수 있게 합니다:

def say_myself(name, old, man=True):
    print(f"나의 이름은 {name} 입니다.")
    print(f"나이는 {old}살입니다.")
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")

say_myself("박응용", 27)  # 기본값 True가 사용됩니다.
say_myself("박응선", 27, False)  # man에 False가 전달됩니다.

기본값 매개변수의 위치

기본값이 설정된 매개변수는 기본값이 없는 매개변수 뒤에 위치해야 합니다. 그렇지 않으면 문법 오류가 발생합니다:

def say_myself(name, man=True, old):
    print(f"나의 이름은 {name} 입니다.")
    print(f"나이는 {old}살입니다.")
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")

# 오류: SyntaxError: non-default argument follows default argument

함수 안에서 외부 변수 사용

함수 안에서 외부 변수를 변경하는 방법은 두 가지입니다:

  1. return 사용하기
a = 1
def vartest(a):
    a = a + 1
    return a

a = vartest(a)
print(a)  # 2
  1. global 사용하기
a = 1
def vartest():
    global a
    a = a + 1

vartest()
print(a)  # 2

그러나 global 키워드는 사용을 자제하는 것이 좋습니다. 함수는 독립적으로 작동하는 것이 좋기 때문입니다.

lambda 함수

lambda는 짧은 익명 함수를 만들 때 사용됩니다:

add = lambda a, b: a + b
result = add(3, 4)
print(result)  # 7

lambda 함수는 다음 def 함수와 동일합니다

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

lambda 함수는 간단한 함수 정의에 유용하지만, 복잡한 함수는 def를 사용하는 것이 좋습니다.

이와 같이 Python의 함수는 다양한 방식으로 정의하고 사용할 수 있으며, 함수의 반환값, 매개변수 초기값 설정, 지역 변수와 전역 변수의 사용 등을 이해하면 더욱 효과적으로 코드를 작성할 수 있습니다.

오늘은 이렇게 python 7번째 시간 함수에 대해서 알아보았습니다. 여러분들의 파이썬 실력이 늘길 기원하면서 오늘 글을 마치겠습니다.

Similar Posts