함수 정의
함수를 만드는 과정에서 가장 중요한 것은 저장과 호출에 대한 이해이다.
앞서 살펴본 것 처럼 함수를 저장하기 위해서는 def 라는 예약어를 사용한다.
def sayHello():
print('hello')
: (콜론) 뒤에 실행하고자 하는 코드를 입력하는 것 만으로는 함수는 실행되지 않는다.
def 에 작성된 것은 단순히 함수를 정의하는 단계이다.
작성한 함수를 실행하려면
함수를 호출해야 한다.
함수 호출
def sayHello():
print('hello')
sayHello()
# hello 출력
정의한 함수의 이름으로 인자를 호출하면 함수가 출력된다.
다만 위의 함수는 아무 인자가 없다. 그냥 부르면 호출되는 무식한 함수이다.
인자(Argument)
인자는 함수를 호출할 때 전달하는 값을 말한다. 넘겨받는 수 또는 값이라고 생각하면 쉽게 이해할 수 있다.
전 게시글에서 작성했던 똥만드는 함수를 가져와보자.
def makeDung(eat):
print(eat + ' 먹고 싼 똥')
makeDung('삼겹살') # '삼겹살' 이 인자(Argument)
makeDung 함수를 호출할 때 '삼겹살' 이라는 값을 전달했다.
여기서는 '삼겹살'이 인자이다.
매개변수(Parameters)
매개변수(Parameters)는 함수가 정의된 곳에서 변수처럼 사용하는 것을 말한다.
다시 똥만드는 함수를 가져와보자.
def makeDung(eat): # eat가 매개변수(Parameters)
print(eat + ' 먹고 싼 똥')
makeDung('삼겹살')
makeDung('미나리')
makeDung('잔치국수')
여기서 인자(Argument)가 값을 전달할 때마다 정의된 함수의 출력값이 달라지는 것을 볼 수 있다.
함수 내부 eat에 삼겹살, 미나리, 잔치국수 등 인자가 전달되어 함수가 출력된다.
따라서 위 함수에서는 eat가 매개변수이다. 함수가 정의된 곳에서 인자가 전달될때마다 변수처럼 사용되고 있다.
반환값(Return Value)
함수는 함수가 정의된 곳에서 전달받은 매개변수를 이용해 프로그래머가 의도한 코드를 실행한 뒤,
계산 결과인 값을 반환할 수 도 있다.
다시 똥 함수를 가져와보자.
이번에는 똥을 변기에 싼다.
그리고 변기를 확인하는 함수를 하나 더 만들었다.
def makeDung(eat):
return eat + ' 먹고 싼 똥'
def openToilet(open):
return print(open)
똥만드는 함수 makeDung은 뭘 먹고 쌌는지 그 값을 저장하는 기능을 한다.
변기를 여는 함수 openToilet은 변기 속 내용물을 확인하고 출력하는 기능을 한다.
이 때 두 함수를 잘 엮어보자.
def makeDung(eat):
return eat + ' 먹고 싼 똥'
def openToilet(open):
return print(open)
toilet = makeDung('삼겹살') # 변기에 삼겹살을 먹은 똥을 쌌다.
openToilet(toilet) # 변기를 열었다.
makeDung은 삼겹살을 인자로 받아서 매개변수를 통해 '삼겹살 먹고 싼 똥' 을 반환했고
반환한 값을 toilet에 할당했다.
opentToilet은 toilet을 인자로 받아서 매개변수를 통해 toilet을 확인했다.
이처럼 return 값을 잘 활용한다면
함수로 많은 것을 할 수가 있다.
Multiple 매개변수 / 인자
def makeDung(eat, drink):
return eat + ' ' + drink + ' 먹고 싼 똥'
def openToilet(open):
return print(open)
toilet = makeDung('삼겹살', '소주')
openToilet(toilet)
매개변수와 인자를 여러개 받을 수도 있다.
다만 인자와 매개변수의 갯수가 맞아야 한다.
'했던것들 > PY4E(모두를 위한 파이썬)' 카테고리의 다른 글
(파이썬) for 루프 (0) | 2022.05.27 |
---|---|
(파이썬) while 루프 (0) | 2022.05.27 |
(파이썬) 함수(Function)의 정의 (0) | 2022.05.27 |
(파이썬) try / except (0) | 2022.05.27 |
(파이썬) elif, 다중 분기(Multi-way Decision) (0) | 2022.05.27 |