함수 실행 순서

매일 공부(ML)·2022년 1월 9일
0

Python

목록 보기
21/38

<함수의 실행순서>
1.파이썬 스크립트 최초 실행
2.hello 함수 호출
3.hello 함수 실행
4.print 함수 실행 및 'Hello, world!' 출력
5.hello 함수 종료
6.파이썬 스크립트 종료


<함수 호출>

def 함수이름():
     코드
          
def hello():
    print('Hello,world!')
hello()

https://dojang.io/pluginfile.php/13778/mod_page/content/5/029001.

<함수 덧셈>

def 함수이름(매개변수1, 매개변수2):
    코드
    
>>> def add(a, b):
...     print(a + b)
    add(a,b)

a+b

def add(a, b):
    """이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다."""
    return a + b
 
x = add(10, 20)       # 함수를 호출해도 독스트링은 출력되지 않음
print(x)
 
print(add.__doc__)    # 함수의 __doc__로 독스트링 출력
실행 결과
30
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.

<함수 반환>

https://dojang.io/pluginfile.php/13780/mod_page/content/2/029003.png
return:함수 바깥으로 값을 반환, 값을 변수에 저장

def 함수이름(매개변수):
    return 반환값   

>>> def add(a, b):
...     return a + b
>>> x = add(10, 20)
>>> x
30
>>> def add(a, b):
...     return a + b
>>> print(add(10, 20))
30

<함수에서 값을 여러 개 반환>

def 함수이름(매개변수):
    return 반환값1, 반환값2
    
>>> def add_sub(a, b):
...     return a + b, a - b
>>> x, y = add_sub(10, 20)
>>> x
30
>>> y
-10

https://dojang.io/pluginfile.php/13781/mod_page/content/2/029004.png

<함수 호출 과정>
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)

https://dojang.io/pluginfile.php/13783/mod_page/content/4/029005.png

전역프레임: 파일 실행이 끝나면 사라짐, 전체 접근
스택프레임: 값들


참고 | 빈 함수 만들기
내용이 없는 빈 함수를 만들 때는 코드 부분에 pass를 넣어줍니다.

def hello():
pass
나중에 다른 사람이 만든 파이썬 소스 코드를 보다 보면
pass를 자주 접할 수 있습니다.
pass는 아무 일을 하지 않아도 함수의 틀을


참고 | 함수 독스트링 사용하기
파이썬에서는 함수의 :(콜론) 바로
다음 줄에 """ """(큰따옴표 세 개)로
문자열을 입력하면 함수에 대한
설명을 넣을 수 있습니다.
이런 방식의 문자열을
독스트링(문서화 문자열, documentation strings, docstrings)이라고 합니다.
단, 독스트링의 윗줄에 다른 코드가 오면 안 됩니다.

def 함수이름(매개변수):
"""독스트링"""
코드

def 함수이름(매개변수):
"""
여러 줄로 된
독스트링
"""
코드

독스트링은 ' '(작은따옴표), " "(큰따옴표),
''' '''(작은따옴표 세 개)로 만들어도 되지만,
파이썬 코딩 스타일 가이드(PEP 8)에서는
""" """(큰따옴표 세 개)를 권장합니다.

앞에서 만든 add 함수에 독스트링으로 설명을
추가해보겠습니다.

def add(a, b):
    """이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다."""
    return a + b
 
x = add(10, 20)       # 함수를 호출해도 독스트링은 출력되지 않음
print(x)
 
print(add.__doc__)    # 함수의 __doc__로 독스트링 출력
실행 결과
30
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.

참고 | 매개변수는 없고 반환값만 있는 함수
함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있습니다. 다음은 매개변수 없이 1만 반환합니다.

>>> def one():
...     return 1
...
>>> x = one()
>>> x
1

참고 | return으로 함수 중간에서 빠져나오기
return은 값을 반환하는 기능뿐만 아니라 함수 중간에서
바로 빠져나오는 기능도 있습니다.
다음은 매개변수 a가 10이면 함수를 그냥 빠져나옵니다.

>>> def not_ten(a):
...     if a == 10:
...         return
...     print(a, '입니다.', sep='')
...
>>> not_ten(5)
5입니다.
>>> not_ten(10)
>>> 

not_ten 함수에 5를 넣으면 print로 '5입니다.'를
출력하지만, 10을 넣으면 return으로
함수 중간에서 바로 빠져나오므로
그 아래에 있는 print는 실행하지 않습니다.

따라서 아무것도 출력되지 않습니다.

이처럼 return은 함수 중간에서 빠져나올 때
자주 사용합니다. 보통은 if와 조합해서 특정 조건일 때
함수 중간에서 빠져나옵니다.


참고 | 값 여러 개를 직접 반환하기
함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 return에 튜플을 지정해주면 됩니다.

def one_two():
return (1, 2)
사실 파이썬에서는 괄호 없이 값을 콤마로 구분하면 튜플이 되죠? 즉, 튜플 1, 2는 튜플 (1, 2)와 같습니다.

1, 2
(1, 2)
따라서 return 1, 2는 return (1, 2)와 의미가 같습니다.

def one_two():
return 1, 2 # return (1, 2)와 같음
물론 return에서 리스트를 직접 반환해도 됩니다. 이때도 반환값을 변수 여러 개에 저장할 수 있습니다.

>>> def one_two():
...     return [1, 2]
...
>>> x, y = one_two()
>>> print(x, y)
1 2

예시

x, y = map(int, input().split())
def calc(a,b):
    return a+b,a-b,a*b,a/b

a, s, m, d = calc(x, y)
print('덧셈: {0}, 뺄셈: {1}, 곱셈: {2}, 나눗셈: {3}'.format(a, s, m, d))

#10 20

# 덧셈:30, 뺄셈:-10, 곱셈:200, 나눗셈:0.5
profile
성장을 도울 아카이빙 블로그

0개의 댓글