파이썬 프로그래밍 시작 (3) 파이썬 함수 실습

파이썬 프로그래밍 시작 (3) 파이썬 함수 실습

지난 포스팅에서 변수, 타입, 조건문을 실습해보며 파이썬 프로그래밍을 시작했습니다. 이번 포스팅에서도 파이썬 배우기를 계속합니다. 이번에는 함수를 배워보겠습니다. 어린이 파이썬 프로그래머로 가는 중요한 한 발짝을 또 내딛어 보시기 바랍니다.



글의 순서

파이썬 프로그래밍 시작 : replit 으로 로그인하기
함수 (function)
함수의 인자
함수의 인자 추가
함수 값 돌려주기, return


파이썬 프로그래밍 시작 : replit 으로 로그인하기

리플(http://repl.it)에 로그인합니다.
로그인하고 난 후 보이는 화면의 중앙 상단에 ‘+new repl’ 버튼이 있습니다. 이 버튼을 클릭하면, ‘New repl’ 창이 뜨는데 여기서 프로그래밍 언어로 파이썬(Python)을 선택합니다. 파이썬 선택 후 ‘Creat Repl’ 을 클릭합니다.

이 과정을 거치면 지난 포스팅에서 보셨던 코딩 환경이 나타나는데, 역시나 3개의 창이 보입니다. 창의 배치는 달라질 수 있습니다만, 그 3개의 창은 각각 코드를 담고 있는 파일이름이 있는 창, 코드를 편집할 수 있는 창, 코드 실행결과를 확인할 수 있는 창(=터미널)으로 구성되어 있습니다.



함수 (function)

함수는 반복되는 코드를 모아서 그룹화한 것입니다. 예를 들어 아래와 같이 대화를 print하는 코드를 만들었다고 가정하겠습니다. 이 코드를 실행하면, 예상하시듯 따옴표 안에 들어있는 대화가 출력됩니다.

실습코드 : 함수01

print("현아 : 언니 어떤 커피 좋아해?")
print("사랑 : 나? 나는 아메리카노")

그런데, 이것을 4번 반복해서 출력해야 할 상황이 생겼다면, 가장 간단하게는 아래의 방법을 사용할 수 있습니다.

실습코드 : 함수02

print("현아 : 언니 어떤 커피 좋아해?")
print("사랑 : 나? 나는 아메리카노")

print("현아 : 언니 어떤 커피 좋아해?")
print("사랑 : 나? 나는 아메리카노")

print("현아 : 언니 어떤 커피 좋아해?")
print("사랑 : 나? 나는 아메리카노")

print("현아 : 언니 어떤 커피 좋아해?")
print("사랑 : 나? 나는 아메리카노")

우리가 원하던 대로 이 코드는 대화를 4번 출력해줍니다. 그런데, 코드는 참 길어졌고, 복잡해보입니다. 대화를 4번이 아니라 100번 출력해야한다면, 새로운 방법이 필요합니다. 이때 필요한 것이 함수(function)입니다.

함수는 ‘def’로 시작하는데, definition을 의미합니다. def를 쓰고 함수이름을 써주면 함수가 됩니다. 이 대화를 chat 이라는 이름을 가진 함수로 만들면 아래와 같습니다. chat뒤에 괄호와 콜론을 찍어줘야 합니다. ‘def chat():’ 가 함수를 선언한 모습입니다. 함수 안에 대화를 넣습니다.

함수를 이용하는 코드는 함수를 먼저 만들어서 선언해 주고 한줄 이상 띄운 후 코드에 함수를 불러주면 됩니다. 이 코드를 실행시키면 대화를 그대로 출력해 줍니다.

실습코드 : 함수03

def chat():
 print("현아 : 언니 어떤 커피 좋아해?")
 print("사랑 : 나? 나는 아메리카노")

chat()

그런데 대화를 4번 반복해서 출력해줘야 한다면 어떻게 하면 될까요? 아래와 같이 chat()을 4번 써주면 됩니다. 함수02 코드와 비교했을 때 훨씬 간단하고 눈에 잘 들어오는 코드가 되었습니다.

실습코드 : 함수04

def chat():
 print("현아 : 언니 어떤 커피 좋아해?")
 print("사랑 : 나? 나는 아메리카노")

chat()
chat()
chat()
chat()


함수의 인자

여기서, 대화의 주체를 현아와 사랑이 대신에 다른 사람들로 바꾸고 싶다면 어떻게 해야할까요? 예를 들어 민서와 서윤이로 말이죠. 가장 간단한 방법은 함수03 코드에서 사람 이름을 아래와 같이 바꾸면 됩니다.

실습코드 : 함수05

def chat():
 print("민서 : 언니 어떤 커피 좋아해?")
 print("서윤 : 나? 나는 아메리카노")

chat()

그런데, 또 다른 사람으로 바꾸고 싶다면, 코드 안에 있는 사람 이름을 계속 바꿔줘야 합니다. 번거로워졌습니다. 이런 상황에 유연하게 대처하기 위해 함수는 인자를 받을 수 있습니다. 코딩용어 인자를 영어로는 파라미터(parameter), 또는 아규먼트(argument)라고 합니다. 함수를 선언할 때 def chat(): 와 같이 def, 함수이름, 괄호, 콜론이 필요한데, 인자를 함수에 넘겨줄 때 괄호()를 이용합니다.

여기서는 함수에 넘겨주는 인자를 name1, name2로 해보겠습니다. 그러면, 함수의 모양은 def chat(name1, name2): 가 됩니다. 함수 내부의 사람이름을 name1, name2로 받는 것입니다. 함수05 코드와 똑같은 내용을 아래의 코드에 나타내었습니다. 사람이름 있던 자리가 %s로 바뀌었고, 각 대화의 끝에 %name1, %name2가 추가되었습니다.

이렇게 함수를 선언해줬고, 실제로 우리가 원하는 사람 이름이 나오려면 함수를 부르는 부분에 인자(파라미터)를 넘겨줘야 합니다. 아래 코드는 name1로는 “민서”, name2로 “서윤”을 넘겨주고 있습니다.

실습코드 : 함수06

def chat(name1, name2):
 print("%s : 언니 어떤 커피 좋아해?" %name1)
 print("%s : 나? 나는 아메리카노" %name2)

chat("민서","서윤")

이렇게 만들고 나면, 대화하는 사람의 이름을 얼마든지 바꿀 수 있습니다. 대화가 4번 나오게 하면서 각각의 대화하는 사람 이름도 바꾸고 싶다면 인자만 바꿔주면 됩니다. 함수를 호출할 때 인자를 넘겨주는 대로 코드가 실행되니까 아래와 같이 코드를 만들어서 확인해 보시기 바랍니다.

실습코드 : 함수07

def chat(name1, name2):
 print("%s : 언니 어떤 커피 좋아해?" %name1)
 print("%s : 나? 나는 아메리카노" %name2)

chat("현아","사랑")
chat("민서","서윤")


함수의 인자 추가

코드의 대화를 조금 더 진행시켜 보겠습니다.

실습코드 : 함수08

def chat(name1, name2):
 print("%s : 언니 하루에 아메리카노 몇 잔 마셔?" %name1)
 print("%s : 나? 아메리카노 2잔" %name2)

chat("현아","사랑")
chat("민서","서윤")

함수08 코드에서 아메리카노 잔 수를 대화하는 사람에 따라서 바꾸고 싶다면 함수의 인자를 추가해서 구현할 수 있습니다. 함수08 코드의 ‘아메리카노 2잔’ 부분이 ‘아메리카노 %d잔’으로 바뀌었습니다. 사람이름 있던 자리가 %s로 바뀐 것처럼, 2가 %d로 바뀌었습니다. %s, %d가 각각 문자열과 숫자를 대신합니다.

함수에서 받은 인자가 3개이므로, 함수를 부를 때 넘겨줘야하는 인자도 3개로 해줘야 하는데, 세 번째 인자는 숫자이므로, ” ” 없이 넘겨줍니다.

실습코드 : 함수09

def chat(name1, name2, cup_number):
 print("%s : 언니 하루에 아메리카노 몇 잔 마셔?" %name1)
 print("%s : 나? 아메리카노 %d잔" %(name2, cup_number))

chat("현아","사랑", 2)
chat("민서","서윤", 3)


함수 값 돌려주기, return

인자 2개를 받은 후 2개의 인자를 서로 더하는 함수를 만들어보겠습니다. 지금까지는 함수10 코드와 같이 print문을 써서 출력을 했는데, 이번 함수에서는 그냥 함수값을 돌려주는 것으로 해 보겠습니다. 함수값을 돌려준다는 의미로 ‘return’을 사용합니다.

실습코드 : 함수10

a = 1
b = 2
c = a + b
print(c)

x = 3
y = 4
z = x + y
print(z)

함수11 코드에서는 인자 두 개를 받은 후 더한 결과를 돌려주는 함수를 실습합니다. 숫자를 바꿔가며 그 결과를 확인해보면 금방 익숙해질 것입니다. 만약 이 함수에서 return을 사용하지 않는다면 어떻게 될까요? 함수12 코드와 같이 만들어놓고 실행을 시키면 3, None 이 순서대로 출력됩니다. None이 출력된 이유는 d=dsum(1,2)에서 d에 아무것도 들어있지 않기 때문입니다. 함수값을 return 시키지 않았기 때문에 함수를 실행했으나, 함수를 실행한 결과를 가져오진 못한 것입니다.

실습코드 : 함수11

def dsum(a, b):
 sumab = a + b
 return sumab

d = dsum(1, 2)
print(d)

실습코드 : 함수12

def dsum(a, b):
 sumab = a + b
 print(sumab)

d = dsum(1, 2)
print(d)


마치며 …

파이썬 프로그래밍 시작 후 ‘함수’까지 살펴보았습니다. 이번 포스팅에서는 파이썬 함수의 개념부터, 함수의 인자와 인자를 추가하는 방법, 함수값을 돌려주는 return까지 실습하였습니다. 파이썬 프로그래밍에서도 함수는 프로그램을 확장하고, 코드를 깔끔하게 만드는데 아주 중요한 요소입니다. 다음 포스팅에서는 조건문에 대해 배워보겠습니다. 어린이 파이썬 프로그래머 프로젝트에 계속 참여해 주시기 바랍니다.

 

 

함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 파이썬 프로그래밍 시작 (2) 변수, 타입, 문자열 실습
3. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
4. 애플 실리콘 M1 시리즈 비교 : M1 Pro, M1 Max, M1 Ultra
5. 디스코드 메신저로 만드는 알림 봇 : 파이썬 함수 예제

 


참고자료

테크보이 워니(2020), 코딩 1시간만에 배우기 – 파이썬 (ft. 실리콘밸리 엔지니어)

이전 글

엔제리너스 콜드브루 디카페인 커피의 카페인 함량 예측

다음 글

파이썬 프로그래밍 시작 (4) 조건문

Leave a Comment