함수

애늙은이·2023년 7월 28일
0
post-thumbnail

저번 리스트 강의에서 우리는 함수에 대해 잠깐 살펴봤습니다. 이번 시간에는 이 함수에 대해 자세히 다뤄보겠습니다.

❓ 함수를 왜 사용할까?

함수(function)는 특정 작업을 수행하는데 사용되는 코드 블럭입니다. 사실, 특정 작업을 수행하는 것은 함수를 만들지 않고도 가능합니다. 그렇다면 왜 함수라는 걸 번거롭게 만들어서 사용할까요? 이는 함수가 코드의 재사용을 가능하게 하기 때문입니다.

예를 들어, 유튜브 영상의 음원을 추출하는 코드가 있다고 해봅시다. 만약 유튜브 영상 100개를 추출한다고 하면, 그 코드를 매번 길게 적어야 합니다. 이는 꽤나 비효율적이라 할 수 있죠. 때문에 해당 코드를 함수로 만들어 사용할 때마다 함수의 코드를 재사용하는 것입니다.

또, 함수는 기능별로 코드를 나눌 수 있어 가독성이 높아진다는 장점도 가지고 있습니다.

🔨 함수의 구조

함수는 기본적으로 입력값과 반환값으로 이루어져 있습니다. 함수에 입력값을 주면, 함수의 코드에 따라 입력값을 처리한 뒤, 반환값을 내놓죠. 경우에 따라 입력값과 반환값이 있거나 없을 수도 있습니다.

파이썬에서 함수는 다음과 같이 만듭니다.

def 함수명(매개변수):
  실행문

def를 통해서 함수를 만들며, 괄호 안에 입력값으로 들어갈 매개변수들의 이름을 적습니다. 또한 return을 사용하여 어떤 값을 반환할 건지 지정해주죠. 코드를 통해 살펴보도록 하겠습니다.

def mul(a, b):
  return a * b

print(mul(2 * 5))

# 결과: 10

위의 코드에서는 mul이란 함수를 정의하고 매개변수로 a와 b를 설정했습니다. 그리고 a와 b를 곱한 값을 반환하였죠.
함수를 사용할 때는 소괄호로 호출을 하면 됩니다. 매개변수를 설정했다면 해당 변수에 들어갈 값들을 적습니다. mul 함수에는 a, b 총 두 개의 매개변수가 값이 필요하기에 2와 5를 값으로 전달하였습니다.

⚙ 함수의 형태

앞서 함수는 입력값과 반환값이 있을 수도, 없을 수도 있다고 하였습니다. 이를 표로 만들어보면 다음과 같습니다.

입력값반환값
OO
OX
XO
XX

코드를 통해 예시를 살펴보겠습니다.

# 입력값, 반환값 모두 존재
def add(x, y):
  return x + y

# 입력값만 존재
def print_sth(x):
  print(x)

# 반환값만 존재
def foo():
  return "foo"

# 입력값, 반환값 둘 다 존재하지 않음
def hello():
  print("hello!")

cf) 반환값이 여러 개인 함수

경우에 따라선 반환값을 여러 개로 가지고 있는 함수도 있습니다. 이 때는 return 뒤에 콤마(,)로 구분합니다.

def div_mod(x ,y):
  return x / y, x % y

a, b = div_mod(10, 2) # y가 0이면 오류가 발생합니다.
print(a) # 결과: 5.0
print(b) # 결과: 0

위의 코드를 살펴보면 x를 y로 나눈 값과 x를 y로 나눈 나머지가 a와 b에 저장되는 것을 보실 수 있습니다. 하지만 만약 변수가 x 하나라면 어떻게 될 까요?

def div_mod(x ,y):
  return x / y, x % y

a = div_mod(10, 2) # y가 0이면 오류가 발생합니다.
print(a) # 결과: (5.0, 0)

만약 변수가 하나라면 반환값들이 원소인 튜플로 저장되게 됩니다.

🟢 기본값

기본값은 parameter default value로, 함수를 선언할 때 매개변수에 미리 설정해놓은 값을 말합니다. 기본값이 설정된 매개변수는 함수 호출 시 값을 따로 입력하지 않아도 됩니다. 만약 함수를 호출할 때 값을 주지 않는다면, 기본값이 매개변수의 값으로 와 함수가 실행되죠.

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

result = add(1)
print(result)

# 결과: 4

물론 기본값이 설정되어 있는 매개변수에 값을 입력할 수도 있습니다. 이 경우, 입력한 값이 매개변수 값으로 오게 되죠.

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

result = add(1, 5)
print(result)

# 결과: 6

기본값을 사용할 때, 한 가지 주의할 점이 있습니다. 바로 기본값을 사용한 매개변수는 일반 매개변수보다 뒤에 와야 합니다.

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

# SyntaxError: non-default argument follows default argument

⚓ 내장 함수

파이썬에서는 자주 사용하는 기능들을 내장 함수(built-in function)로 만들어 제공하고 있습니다. print(), range()와 같은 함수들이 대표적인 내장함수이죠. 파이썬 내부적으로 이미 만들어져 있는 함수이기 때문에 우리가 따로 선언할 필요 없이 사용할 수 있게 해주는 것입니다.

profile
글쓰는 개발자입니다.

0개의 댓글