이번 글에서는 파이썬에서 함수에 대해 알아보겠습니다.
함수는 입력을 받아 정해진 처리를 통해 출력을 하는 것을 말합니다.
공장에서 플라스틱 가지고 일정한 공정을 통해 젓가락, 그릇, 컵 등을 만드는 것과 비슷합니다.
예시
제일 간단한 형태의 예시를 들어보겠습니다.
a와 b에 1, 2를 저장한 뒤 a, b를 더한 값을 c에 저장하고 수식을 터미널에 출력하는 과정을 짜보겠습니다.
a = 1
b = 2
c = a + b
print(a, "+", b, "=", c)
1, 2를 더할 뿐만 아니라 3+4, 등등 더하기를 여러번 하게 되면 매번 같은 코드를 짜야 합니다.
a = 1
b = 2
c = a + b
print(a, "+", b, "=", c)
a = 3
b = 4
c = a + b
print(a, "+", b, "=", c)
a = 10
b = 20
c = a + b
print(a, "+", b, "=", c)
이러한 동일한 작업을 함수로 만들어 사용하면 편하게 사용할 수 있습니다.
def Add(a, b):
c = a + b
print(a, "+", b, "=", c)
return c
Add(1, 2)
Add(3, 4)
Add(10, 20)
너무 간단해서 두 방식 중에 어떤 것이 더 좋은지 알수 없지만 ,아래와 같이 수정을 해야한다면 함수로 만드는 것이 관리하기도 쉽습니다.
def Add(a, b):
c = a + b
print(a, "+", b, "=", c)
print("="*7) # ======= 추가
return c
Add(1, 2)
Add(3, 4)
Add(10, 20)
기본 구조
파이썬에서 함수 구조는 다음과 같습니다.
def 함수이름(매개변수1, 매개변수2):
수행문장
수행문장
수행문장
...
return 반환
위 구조에 맞춰 예시 함수를 만들어보았습니다. 매개변수를 2개 받으며, 두 개의 값을 반환하는 함수입니다.
def Add(a, b):
return a + b
print(Add(1, 2))
입력 없는 함수
매개변수가 없는 함수도 있습니다.
괄호() 안에 아무것도 입력하지 않으면 됩니다.
def alphabet():
return "abcdefghijklmnopqrstuvwxyz"
print(alphabet())
반환 없는 함수
반환이 없는 함수도 있습니다. return 뒤에 아무것도 입력하지 않거나 return을 입력하지 않으면 됩니다.
def print_number():
print("0123456789")
return
def print_alphabet():
print("abcdefghijklmnopqrstuvwxyz")
print_number()
print_alphabet()
입력이 여러 개인 함수
입력 하는 개수가 여러개일 수도있습니다.
매개변수에 별표(*)를 입력한 뒤 매개변수명을 입력하면 됩니다.
def Add(*args):
sum = 0
for i in args:
sum += i
return sum
print(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
위의 경우 args의 타입은 튜플입니다. 매개변수가 여러개일 경우도 가능합니다.
def Add(init, *args):
sum = init
for i in args:
sum += i
return sum
print(Add(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
print(Add(-10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
키워드 파라미터
매개변수에 별표를 두개 붙이면 키워드 파라미터입니다. 키워드 파라미터는 매개변수가 딕셔너리로 만들어집니다.
키워드 파라미터에 입력할 땐 딕셔너리처럼 key=value로 입력해야합니다.
def keyword_param(**kargs):
print(kargs)
keyword_param(apple="사과", banana="바나나")
keyword_param(d=4)
반환이 여러 개인 함수
값을 여러 개 반환할 수도 있습니다.
return에 반환할 값들을 쉼표(,)로 구별지으면 됩니다.
def calc(a, b):
return a + b, a - b, a * b
sum, sub, mul = calc(1, 2)
print("sum:", sum)
print("sub:", sub)
print("mul:", mul)
위 예시 함수에서 반환값 중에 더하기와 곱하기만 반환하려면 언더바(_)를 사용하면 됩니다.
언더바(_)는 반환값을 받지 않겠다는 의미입니다.
def calc(a, b):
return a + b, a - b, a * b
sum, _, mul = calc(1, 2)
print("sum:", sum)
print("mul:", mul)
하지만 반환값은 1개
위에서는 반환값이 여러 개라고 했지만 결국 1개입니다.
아래 예시에서 보듯이 하나의 변수에 받을 수 있고, 그 변수 타입은 튜플입니다.
def calc(a, b):
return a + b, a - b, a * b
sum_sub_mul = calc(1, 2)
print(sum_sub_mul)
이상으로 파이썬에서 함수에 대해 알아보았습니다.