함수(function) - 코드를 한곳에 모아 놓은것
변수() 이런모양을 우리는 함수라고 한다.
input(),print()같이 이미 있는 함수도 있지만 직접 코드를 할당해서 사용도 가능하다
함수의 장점
- 코드의 용도를 구분할 수 있다.
- 코드를 재사용할 수 있다.
- 실수를 줄일 수 있다.
def 로 ding 출력 함수 만들기
def 함수이름():
코드
*def 은 define에서 따온 키워드
#함수 만들기
def abcd():
print('ding')
#함수 호출하기
abcd()
#결과
ding
#오류
#함수 호출하기
abcd()
#함수 만들기
def abcd():
print('ding')
#결과
Traceback (most recent call last):
File "C:\project\function.py", line 1, in <module>
abcd()
NameError: name 'hello' is not defined
*순서는 꼭 지켜야 한다.
함수의 실행 순서
- 파이썬 스크립트 최초 실행
- abcd 함수 호출
- abcd 함수 실행
- print 함수 실행 및 'ding' 출력
- abcd 함수 종료
- 파이썬 스크립트 종료
빈 함수 만들기
def hello():
pass
print(hello())
None
함수는 존재하고 틀은 갖춰져 있지만 아무일 일어나지 않는다.
덧셈함수 만들기와 매개변수
함수 괄호안에 들어가는 값을 매개변수(parameter)라고 한다
def 함수이름(매개변수1,매개변수2):
코드
#함수 만들기
def add(a,b):
print(a+b)
#함수 호출하기
add(10,20)
30
함수 독스트링 사용하기
독스트링(문서화 문자열,documentation strings,docstring)
주석이라고 생각하면된다.사용법같은 것을 메모 하는 용도로 사용되는데 사용법은
:(콜론)뒤에 아래의 것들을 사용하면된다.
- ''(작은따옴표)
- ""(큰따옴표)
- ''''''(작은따옴표 세개 쌍)
- """"""(큰따옴표 세개 쌍)
**독스트링의 윗줄에 다른코드가 오면 안된다.
def 함수이름(매개변수):
"""독스트링"""
코드
def 함수이름(매개변수):
"""
여러 줄로 된
독스트링
"""
코드
아래는 독스트링 사용 예시이다.
def add(a, b):
"""이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다."""
return a + b
x = add(10, 20)
print(x)
#결과
30
독스트링도 표시하려면 어떻게 해야할까?
print(add.__doc__)
#결과
30
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.
#도움말 형식으로 출력해보기
help(객체)
help(add)
Help on function add in module __main__:
add(a, b)
이 함수는 a와 b를 더한 뒤 결과를 반환하는 함수입니다.
return - 함수결과 반환하기
여태 우리가 만든 함수는 코드가 작동만 하고 아무것도 출력 되지 않았다.
반환을 하려면 아래의 return을 사용하면된다.
def 함수이름(매개변수):
return 반환값 #return에 값을 지정하지 않으면 None을 반환
def add(a,b):
return a + b
x = add(10,20)
x
30
만약 retrun을 사용하지않는다면?
def add(a,b):
a + b
x = add(10,20)
x #아무일도 일어나지 않는다.
print(add(10,20))
None
아무 일도 일어나지 않는다. print해보면 None인 것을 확일할 수 있다.
매게 변수가 없는 함수
def one():
retrun 1
#결과
one()
1
#매개변수를 넣는다면?
one(1)
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
one(1)
#오류가 발생한다
함수 중간에 빠져나오기
def not_ten(a):
if a == 10:
return
print(a, '입니다.', sep='')
#실행결과
not_ten(5)
5입니다.
not_ten(10)
매개변수가 10일 경우 return한다. 실행결과 10인 경우 아무일도 일어 나지않았다.
if와 조합해서 함수 중간에 빠져나올때 유용하게 쓰인다.
함수에서 값을 여러개 반환하기
def 함수이름(매개변수):
return 반환값1, 반환값2
def add_sub(a,b):
return a + b,a - b
x,y = add_sub(10,20)
z = add_sub(10,20)
#실행결과
x
30
y
-10
z
(30,-10)
여러개의 값을 반환해보았다.
반환값의 갯수와 맞춰서 변수에 할당하면 하나씩 값이 할당 되었지만
변수한개에 반환값을 전부 넣으면 튜플로 생성이 되었다.이유를 보자면
retrun a+b,a-b 즉 ~~~,~~~ 컴마로 구분되어있는것이다. 기억해보면
여러개의 값을 하나로 묶으면 자동으로 튜플로 생성된다 30,-10 와 (30,-10) 이 같듯이
리스트로 반환해보기
def one_two():
return [1, 2]
print(one_two())
[1,2]
x,y = one_two()
print(x,y)
1 2
one_two() 함수는 리스트지만 요소들은 int이기에 따로 출력하면 int로 출력된다.
함수호출 과정 알아보기 *(자문)
스택 다이어그램(stack diagram)
전역 프레임(global frame)
스택 프레임(stack frame)
스택방식은 함수를 위에서 부터 아래로 쌓으며 함수가 끝나면 윗쪽방향으로 사라진다.
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)
- 스크립트를 실행하면 전역프레임에 함수,변수가 들어옵니다.
- add()함수 내부에 mul()함수가 있다 add 먼저 호출
- 이후 mul함수도 호출
- mul함수의 연산이 끝나면 사라진다.
- add함수 역시 연산이 끝나면 사라진다.
전역 프레임은 스크립트 파일의 실행이 끝나면 사라진다.
'Python > 기초문법' 카테고리의 다른 글
(25)재귀함수 (0) | 2022.04.10 |
---|---|
(24)위치 인수,가변 인수,키워드 인수 (0) | 2022.04.07 |
(22)회문 & N-gram (0) | 2022.04.06 |
(21)파이썬으로 파일에 문자열 쓰고,읽기 (0) | 2022.04.05 |
(20)세트 (0) | 2022.04.04 |