프로그램을 코딩하다보면, 반복되는 코드가 필요한 경우가 있다. 그럴 땐 반복해서 작성해야 하는가?
물론, 아니다. 프로그래머는 최대한 게을러야 한다. 보다 쉽고, 편하고, 적게 일해야 한다.
함수는 반복되는 코드를 재사용하기위해 만든다.
함수를 잘 만들면 코드의 가독성을 높이고, 유지보수를 쉽게 하며 프로그램의 오류를 줄일 수 있다.
왜?? 재사용을 하니 코드의 길이가 짧아 지니 가독성이 좋아지고,
가독성이 좋으니 프로그램의 로직을 이해하기 쉬워지고,
코드를 읽기 쉬워지니 오류가 생길 여지가 들어든다.
파이썬에서의 함수는 def 로 시작한다. 이 예약어는 "이제부터 함수를 시작하겠다" 라는 선언이다.
함수는 파라미터를 가질 수 있고, 결과 값을 return 할 수 있다.
파라미터는 함수를 실행할 때 사용할 값을 함수에게 주는 것이다.
예) def sample(n) ==> 여기서 n 이 파라미터
그리고, return 의 의미는 함수를 호출한 곳으로 함수에서 실행하여 만든 결과 값을 돌려주는 것이다.
예를 들어, 믹서에게 사과를 넣어 주고 "사과 주스를 만들어줘" 한다면..
믹서는 함수가 되고, 사과는 파라미터, 사과주스는 return 해야하는 결과 값이다.
1. 함수 정의 하기
n을 파라미터로 가진 함수를 호출하기
>>> def sample(n):
print(n)
sample("파이썬 세상")
------------------
파이썬 세상
함수 호출 시 파라미터를 지정하지 않았지만 함수에서 기본값을 지정하여 사용되는 경우도 있다.
아래 예제의 경우에는 함수 호출 시 retries 난 reminder 에 값을 넣어줘도 되고, 안 넣어줘도 된다.
>>> def ask_ok(prompt, retries=4, reminder='Please try again!'):
while True:
reply = input(prompt)
if reply in {'y', 'ye', 'yes'}:
return True
if reply in {'n', 'no', 'nop', 'nope'}:
return False
retries = retries - 1
if retries < 0:
raise ValueError('invalid user response')
print(reminder)
한가지 주의 해야 할 점은, 파라미터의 기본값은 함수 정의 시점에 정의 되어 진다는 점입니다.
그래서 아래 예제의 결과값은 "딸기"가 아니라 "사과"가 됩니다.
i = "사과"
def f(arg=i):
print(arg)
i = "딸기"
f()
기본값은 최초 호출시 한번만 값이 구해집니다. 그래서 아래 함수를 호출하게되면 리스트에는 순차적인 값이 쌓이게 됩니다.
def f(a, L=[]):
L.append(a)
return L
print(f("사과"))
print(f("딸기"))
print(f("참외"))
-----------------------------
['사과']
['사과', '딸기']
['사과', '딸기', '참외']
위의 함수를 호출 시 호출할때마다 값이 연동되는 것을 방지하려면?
5, 4, 3, 2, 1....그렇습니다. 호출할 때 리스트를 비워주면 되겠지요.
def f(a, L=[]):
L.clear()
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
---------------------------
['사과']
['딸기']
['참외']
'파이썬 시작하기' 카테고리의 다른 글
list 자세히 보기 (0) | 2024.09.02 |
---|---|
파이썬의 변수 사용 (0) | 2024.08.06 |
비주얼 스튜디오 코드 설치 및 파이썬 환경 셋팅 (0) | 2024.08.06 |
파이썬 첫걸음 - Python 설치 (0) | 2024.07.08 |
파이썬의 특징 (0) | 2024.07.08 |