-
TIL. 24 함수 만들고 사용하기TIL 2020. 11. 1. 17:16728x90
## 함수 만들기
# 김왼손의 왼손코딩 강의에서는 이렇게 뒷부분에 등장하지 않았던 것 같으나 많고 많은 중요한 내용 중 하나가 등장했다고 생각하니
# 기본을 기본처럼 익히자.
## hello 함수 만들고 출력하기
## 함수는 def에 함수 이름을 지정하고 ( )(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성한다(함수의 이름을 짓는 방법은 변수와 같다).
# 이때 코드는 반드시 들여쓰기를 한다.
def hello(): print('helloo world') # 빈줄 1줄 사용
print 코드 아래의 빈줄은 print 함수를 실행 후 , 하면서 빈줄이 있음으로써 hello() 함수가 종료되는 것이다.
def hello(): print('helloo world') hello() # 빈줄 없이 바로 함수 호출
# vs 코드 작성시 빈줄을 사용하지 않고 바로 함수를 호출하여도 동작은 하지만 빈줄에 대해서 알고 있을 필요가 있다.
# hello() 라는 함수는 vs 코드에서 hello() 만 입력해도 안의 print가 있으므로 별도 print는 필요없다
# 또한 뒤의 () 를 생략해서도 안된다.
## 이렇게 함수를 사용할때는 함수를 호출(call)한다고 부른다
hello() # 함수 호출 (call)
# 앞은 숫자로 시작 x 공백 시작 x 는 변수를 할당할때와 동일하다.
## 함수의 실행 순서.
1. 파이썬 스크립트 최초 실행
2. hello 함수 호출
3. hello 함수 실행
4. print 함수 실행 및 'Hello, world!' 출력
5. hello 함수 종료 # 빈줄
6. 파이썬 스크립트 종료
## 함수의 작성과 호출순서
## 당연하지만 함수를 만들어 주기 전에 함수를 호출 할수 없다.
## 빈 함수 만들기
def okk(): pass
## 내용이 없는 빈 함수를 만들 수 있으며, pass 를 이용해 아무일을 하지 않아도 함수의 틀을 유지해야할 때 사용한다.
## 덧셈 함수 만들기
def 함수이름(매개변수1, 매개변수2): 코드
def add(a, b): print(a + b)
# 함수에 값을 넣어서 실제로 동작가능하도록 정의해주자
# 함수에서 값을 받아오려면 (사용자 입력에 따라 값이 달라짐로 받아온다는 표현을 쓴다)
# () 괄호 안에 변수 이름을 넣어주면 된다.
# 이때 넣어주는 변수를 "매개변수"(parameter)라고 부른다 // a == 매개변수 1, b == 매개변수2
add(100, 200)
## add 함수를 100, 200 을 넣어 호출해보자.
# 여기서 함수를 호출 할 때 넣는 값(100, 200)을 "인수"(argumunt) 라고 부른다
## 종합
# 함수 정의 시 값 a, b 는 매개변수
# 함수 호출 시 값 100, 200 은 인수 이다.
## 함수 독스트링 사용하기
## 독스트링 이란
## 파이썬에서는 함수의 :(콜론) 바로 다음 줄에 """ """(큰따옴표 세 개)로 문자열을 입력하면 함수에 대한 설명을 넣을 수 있다.
# 이런 방식의 문자열을 독스트링(문서화 문자열, documentation strings, docstrings)이라 한다.
## 단, 독스트링의 윗줄에 다른 코드가 오면 안 된다.
def add (a, b): """ 이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다 """ return a + b x = add(10, 20) print(x) # return 반환 하는 함수로 print 사용해줌 또는 반환 값 변수에 할당 :: 30 ## 독스트링 출력 x
##(add.__doc__)add 함수의 독스트링 출력해줌
print(add.__doc__) :: 이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다
## help(객체) 를 이용해 확인 가능하다.help(add) :: Help on function add in module __main__: add(a, b) 이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다
## 함수 결과 반환 하기
## 함수 안에 print가 아닌 return을 이용하면 값을 함수 바깥으로 반환한다..(return에 값을 지정하지 않으면 None을 반환).
def add (a, b): return a + b x = add(10, 20) print(x) :: 30
# 이처럼 return을 사용하면 값을 바깥으로 반환 할 수 있고, 함수에서 나온 값을 변수에 저장할 수 있다.
# 즉, return으로 반환하는 값은 반환값이라고 하며 함수를 호출해준 바깥에 결과를 알려주기 위해 사용합니다.
# 반환값은 변수에 저장하지 않고 바로 다른 함수에 넣을 수도 있다. 다음은 print에서 바로 add를 호출하여 결과를 출력할 수 있다.
print(add(20, 30)) :: 30
## 매개변수가 없고 반환값만 있는 함수
def opp(): return 1 print(opp()) :: 1
## return 으로 함수 중간에 빠져나오기
def not_ten(a): if a == 10: return print(a, '입니다') not_ten(5) :: 5 입니다 출력 not_ten(10) # 10이면 리턴으로 함수 중간에 빠져나와 return 아래 print를 실행하지 않아 아무것도 출력되지 않는다.
## 이처럼 return은 함수 중간에 빠져나올때 자주 사용하며 if 문과 조합해 특정조건에 빠져나오도록 만들 수 있다.
## 여러값 반환하기
def 함수이름(매개변수): return 반환값1, 반환값2
def aff(a, b): return a+b, a-b x, y = aff(10, 20) print(x) :: 30 print(y) :: -10 print(x, y) :: 30, -10
## 함수에서 정의한 바와 같이 30, -10 값이 반환되고
## 변수 2개를 사용해줌으로써 x <- 30, y <- -10을 할당하는 것을 볼 수 있다.
## 이는 언패킹을 이용한 것으로 아래 코드도 함께 참고하자
z = aff(10, 20) print(z) :: (30, -10)
## 이처럼 (30, -10) 한개의 튜플로 반환되는 것을 볼 수 있다.
## 즉 튜플이 변수 여러개에 할당되는 특성(언패킹)을 이용한 것이다.
i, j = (30, -10) print(i) :: 30 print(j) :: -10
## 언패킹을 이용해 각각 i, j에 값을 할당할 수 있다.
## 값 여러 개를 직접 반환하기
# 함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 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) # x <- 1, y <-2 unpacking :: 1 2
728x90'TIL' 카테고리의 다른 글
TIL.26 함수 매개변수 및 인수 (0) 2020.11.03 TIL. 25 함수의 호출 과정 (0) 2020.11.02 TIL.23 N-gram 만들기 (0) 2020.10.31 TIL. 22 회문 판별하기 (0) 2020.10.30 TIL. 21 파일 사용하기 (0) 2020.10.29