← 보드왕초보 코드 읽기 · 5/11
함수 — 이름 붙은 작은 기계 (def, return) ★★
함수(function)는 "재료를 넣으면 결과를 내주는 작은 기계"예요. 한 번 만들어 두면 이름만 불러서 계속 쓸 수 있어요. 함수를 만드는 명령이 def이고, 결과를 내보내는 명령이 return이에요.
비유
착즙기를 떠올려 보세요. 과일(입력)을 넣으면 주스(출력)가 나와요. def는 착즙기를 설계해 두는 일이고, add(3, 4)처럼 이름을 부르는 것이 착즙기를 실제로 돌리는 일이에요. 설계만 해 두고 안 돌리면 주스는 안 나와요.
def add(p, q):
return p + q
r = add(3, 4)
print(r)
def twice(x):
print(x * 2)
r = twice(3)
print(r)
def greet(name, times=1):
return (name + " ") * times
print(greet("A"))
print(greet("A", 2))
7
6
None
A
A A
| 코드 줄 | 무슨 뜻 |
|---|---|
def add(p, q): | "add라는 기계를 만든다. 재료 두 개(p, q)를 받는다". 끝의 콜론(:)과 아래 줄의 들여쓰기가 규칙이에요 |
return p + q | 들여쓴 줄은 함수 안쪽이에요. p+q를 계산해서 "돌려주고" 함수를 끝내요 |
r = add(3, 4) | add를 실행해요(p=3, q=4). 돌려받은 7이 r에 들어가요 |
print(r) | 7을 찍어요 |
r = twice(3) | twice 안에서 print(6)이 실행돼 6이 화면에 찍혀요. 그런데 twice에는 return이 없어서 r에는 None(아무것도 없음)이 들어가요 |
print(r) | None을 찍어요 |
times=1 | 기본값이에요. 값을 안 넘기면 1을 쓰고, 넘기면 넘긴 값을 써요. greet("A")는 "A"를 한 번, greet("A", 2)는 두 번 이어서 "AA"가 돼요 |
print와 return은 달라요. print는 화면에 글자를 보여 줄 뿐이고, return은 값을 함수 밖으로 돌려줘요. 돌려받은 값을 변수에 넣어 다음 계산에 쓸 수 있는 건 return이에요.
시험엔 이렇게 써요 — 이렇게 고르세요
① def 블록은 정의만으로는 아무 일도 안 해요. 이름을 불러(호출) 줄 때 비로소 실행돼요. ② 호출하면 인자를 순서대로 재료 칸에 넣고 들여쓴 줄을 위에서 아래로 실행해요. ③ return을 만나면 값을 들고 바로 빠져나와요.
잠깐 확인 — def f(x): 안에 return이 없고 print(x)만 있습니다. y = f(5)를 하면 y에는 무엇이 들어 있나요?
None이에요. 5는 화면에 찍히지만 돌려준 값이 없기 때문이에요.
다음 카드 → 반복 — for와 range, 그리고 들여쓰기 ★★
자료: 2~4주차 · Week02/Week03 노트북(풀이포함) · 빅분02(2주차)·빅데이터03(3주차)·빅데이터04(4주차) 녹취