-
[코딩도장] day21. 파이썬 함수 사용하기IT/파이썬 2020. 9. 12. 15:03
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit29. 함수 사용하기
- 29.1 Hello, world! 출력 함수 만들기
- 29.2 덧셈 함수 만들기
- 29.3 함수의 결과를 반환하기
- 29.4 함수에서 값을 여러 개 반환하기
- 29.5 함수의 호출 과정 알아보기
>> 29.1 Hello, world! 출력 함수 만들기 <<
- 다른 개발 언어들과 마찬가지로 파이썬에서도 함수(function) 사용 가능
1. Hello, world! 출력 함수 만들기
- 함수는 def에 함수 이름을 지정하고 ()(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성 (def: define, 정의하다)
- 사용법
def 함수이름() :
코드
2. 함수 만들기
>>> def hello() :
print('Hello, world!')3. 함수 호출하기
- 함수 이름과 ()를 적어주면 사용 가능
- 사용법: 함수()
>>> hello()
Hello, world!
>>>4. 소스 파일에서 함수 만들고 호출하기
소스 (function.py) 결과 def hello() :
print('Hello, world!')
hello()Hello, world! 5. 함수의 실행 순서
1. 파이썬 스크립트 최초 실행
2. hello 함수 호출
3. hello 함수 실행
4. print 함수 실행 및 'Hello, world!' 출력
5. hello 함수 종료
6. 파이썬 스크립트 종료
6. 함수 작성과 함수 호출 순서
- 함수를 만들기 전에 함수를 먼저 호출하면 안됨!
- 함수가 정의(define)되지 않아 에러 발생!
소스 (test.py) 결과 hello()
def hello() :
print('Hello, world!')Traceback (most recent call last):
File "C:/project/test.py", line 1, in <module>
hello()
NameError: name 'hello' is not defined
>> 29.2 덧셈 함수 만들기 <<
- 함수에 값을 넘겨 받아 동적으로 처리
- 함수에서 값을 받기 위해서는 ()(괄호) 안에 변수 이름을 지정 => 매개변수(parameter)
함수를 호출할 때 넣는 값을 인수(argument)라고 부름
- 사용법
def 함수이름(매개변수1, 매개변수2, ..) :
코드
>>> def add(a, b) :
print(a + b)
>>> add(10, 20)
30[참고] 함수 독스트링(docstrings) 사용하기
- 함수의 :(콜론) 바로 다음 줄에 """ """ (큰따옴표 세 개)로 문자열을 입력하면 함수에 대한 설명을 넣을 수 있음
- 작음따옴표, 큰따옴표, 작은따옴표 세 개로 작성 가능하지만 파이썬 코딩 스타일 가이드(PEP8)에서는 큰따옴표 세 개 권장
소스 (function_documentation_strings.py) 결과 def add(a, b) :
"""이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수"""
return a + b
x = add(10, 20)
print(x)
print(add.__doc__) # 독스트링 출력하기 위해 __doc__ 로 출력30
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수
>> 29.3 함수의 결과를 반환하기 <<
- 함수 마지막에 return을 사용하면 값을 함수 바깥으로 반환가능
- return만 사용 시 None을 반환 (if 조건문과 조합해서 특정 조건 시 함수 중간에서 빠져나기기 위해 사용)
- return으로 반환하는 값을 반환값이라고 하며 함수를 호출한 바깥에 결과를 알려주기 위해 사용
>> 29.4 함수에서 값을 여러 개 반환하기 <<
- 함수에서 값을 여러 개 반환할 때는 return에 값이나 변수를 ,(콤마)로 구분해서 지정!
- 사용법
def 함수이름(매개변수) :
return 반환값1, 반환값2
>>> def add_sub(a, b) : # 덧셈과 뺄셈 값을 반환하는 함수
return a + b, a - b
>>> x, y = add_sub(10, 20)
>>> x
30
>>> y
-10- return으로 값을 여러 개 반환 시 실제로는 튜플이 반환됨
- 튜플이 변수 여러 개에 할당되는 특성 이용 (언패킹)
- return에 값 여러 개를 콤마로 구분해서 지정하거나 튜플, 리스트로 직접 반환 가능!
>>> z = add_sub(10, 20)
>>> z
(30, -10)
>>> 1, 2 # 실제 파이썬에서는 괄호없이 콤마로 값을 구분하면 튜플로 처리됨
(1, 2)
>> 29.5 함수의 호출 과정 알아보기 <<
소스 (function_call.py) 결과 def mul(a, b) :
c = a * b
return c
def add(a, b) :
c = a + b
print(c)
d = mul(a, b)
print(d)
x = 10
y = 20
add(x, y)30
200- 줄1 ~ 줄12까지 실행하면 전역 프레임(global frame)에 함수 mul, add / 변수 x, y가 들어감
- 프레임?? : 메모리에서 함수와 함수에 속한 변수가 저장되는 독립적인 공간
( C언어에서 stack과 유사....? // stack메모리 더 알아보기 )
- 전역 프레임?? : 파이썬 스크립트 전체에서 접근가능한 영역
- 함수 add 호출 후 줄7까지 실행한 상태
- 함수 add의 스택 프레임이 생성되며, 매개변수 a와 b, c가 들어감
- 줄8의 함수 mul을 호출한 뒤, 줄3 return까지 실행하면 함수 mul의 스택 프레임이 생성되며, 매개변수 a, b, c가 들어감
- 줄9 print(d)까지 실행하면 함수 mul을 끝내고 함수 add로 돌아감
- 함수 mul에서 반환한 반환값 200이 변수 d에 저장되며 add의 스택 프레임에 들어감
- 함수 mul은 끝났기 때문에 스택 프레임도 사라짐
- 줄13 add(x, y)까지 실행해서 함수 add를 끝내고 add의 스택 프레임도 사라짐
※ 전역 프레임은 스크립트 파일의 실행이 끝나면 사라짐
● 요약 ●
1. C언어하면서 메모리 부분이 가장 어려웠는데 파이썬에서도 나오는구나
2. 역시 기초를 탄탄하게 배웁시다.
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day22. 재귀호출 (0) 2020.09.13 [코딩도장] day21. 함수에서 위치 인수와 키워드 인수 사용하기 (0) 2020.09.12 [코딩도장] day20. 회문 판별과 N-gram 만들기 (0) 2020.09.12 [코딩도장] day20. 27.5 연습문제 (0) 2020.09.11 [코딩도장] day20. 파일 사용하기(2/2) - pickle, unpickle (0) 2020.09.11