Function이란 단어를 키보드에서 본 적이 있을 것이다. function은 '기능'을 뜻하는데 기능을 하는 부분을 따로 만들어 놓는다는 것이 함수, 즉 우리가 리스트에서 요소를 추가할 때 사용하는. append, 문자열이나 튜플, 리스트 등의 길이를 구할 때 사용하는 len() 같은 것들이 결국에 미리 정해진 행동을 해주는 함수들이다.
이러한 기본 내장함수들과 여러 사람들이 만들어 놓고 배포해주는 다양한 함수들을 가지고 우리는 크게 머리를 쓰지 않아도 파이썬에서 쉽게 프로그래밍을 할 수 있다. 마찬가지로 직접 함수를 만들 수도 있는데 그때 사용하는 예약어가 def이다.
def 함수 선언 기본 구조
def 함수이름(매개변수):
실행문 1
실행문 2
실행문 3
.
.
.
여기서 매개변수란 함수안에서 사용할 변수인데 평소에 만들던 변수들과는 다르게 값을 정해놓고 있지 않으며 그때그때 들어오는 값을 받아 함수 안에서 사용할 변수라고 인지하고 있으면 된다.
일종의 식을 구성하기위한 변수.
예문
def add(n1, n2): # 함수이름은 'add', n1과 n2로 값을 받는다.
return n1 + n2 # 함수 add는 n1과 n2를 받아 더해(+)준 후 결괏값을 돌려준다
# 사용법
a = 1
b = 2
result = add(a,b) # n1으로 a, n2로 b를 받아 함수'add'를 실행
print(result) # 출력
# 결과
3
쉽게 result = a+b로 만들어도 되지만 함수가 어떻게 돌아가는지 보기 위해 a+b를 해주는 함수를 만들어 본것이다. 하지만 더욱더 복잡한 식을 연속적으로 수행해야 하면 직접 만든 함수가 더욱 꿀맛 같아질 것이다.
두 값을 받아 자동으로 이 두 값의 범위에 있는 숫자들을 펼쳐 리스트로 보여주는 함수가 필요하다고 치자.
def rlist(firstnum, endnum): # 함수이름은 'rlist' firstnum과 endnum로 값을 받는다.
result = list(range(firstnum, endnum+1)) # firstnum과 endnum을 받아와 range함수로 범위를 만든다.
# 그렇게 만든 범위를 list로 펼친다.
return result # result를 결괏값으로 반환 (함수의 결과는 result)
# 사용법
a = 1
b = 10
list1 = rlist(a,b) # 함수에 변수로 값 주기
list2 = rlist(20,30) # 함수에 정수로 값 주기
print(list1)
print(list2)
# 결과
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
endnum에 +1을 해주는 이유는
range(~~부터, ~~ 미만까지) 범위로 만들어주는 기능을 하는 내장 함수이다. 즉 시작 숫자부터 끝숫자까지가 아닌 시작숫자부터 뒤에 적어주는 숫자 미만까지 이기 때문에 +1로 간단히 표현할 수 있다.
그리고 list()를 사용해 숫자들을 리스트로 만들어 준다. 이처럼 def를 이용해 함수를 직접 만들어 두면
프로그래밍을 하면서 여러 번 사용해야 하는 식을 만들어 놓은 것을 계속 가져와 쓸 수 있기 때문에
코드의 길이와 걸리는 시간이 많이 줄어든다.
매개변수
def 함수이름(매개변수1, 매개변수2, .....): # 함수 선언시
함수이름(매개변수1에 들어갈 값, 매개변수2에 들어갈 값, .....) # 함수 사용시
앞에서 매개변수는 함수 안에서 사용할 변수로 기억하라고 하였다.
이러한 기본 모양은 사용할 때에도 만든 순서대로 들어가리라 생각하고 사용해야 한다.
def 함수이름(매개변수1, 매개변수2, .....): # 함수 선언시
함수이름(매개변수1 = 10, 매개변수2 = 20, .....) # 함수 사용시
하지만 사용할 때 직접 어느 매개변수에 들어갈 값인지 지정해주어 사용할 수도 있다.
이경우에는
def 함수이름(매개변수1, 매개변수2, 매개변수3): # 함수 선언시
함수이름(매개변수3 = 30, 매개변수2 = 20, 매개변수1 = 10) # 함수 사용시
이미 어느 매개변수에 들어갈 값인지 지시해주었으므로 순서를 지키지 않아도 된다.
만약 함수에 들어갈매개변수의 갯수가 정해져 있지 않다면??
만약 랜덤한 갯수로 값을 입력을 받아서 그 모든값을 매개변수에 넣어 사용해야 한다면
def 함수이름(*매개변수): # 함수 선언시
이렇게 매개변수 앞에 ( * ) 별모양을 넣어주면 파이썬에선 자동으로 이 값들을 모아
튜플
(값이 변하지 않는 리스트)
형태로 만들어 준다.
받은 값을 모두 더해주는 함수 만들기 예문
def addall(*num): # 함수이름은 'addall', 튜플 형태의 num으로 값을 받는다.
result = 0
for i in num: # 받은 값 num을 차례로 i에 대입
result = result + i # 들어온값 i 를 result에 차례로 더함
return result # 함수의 결괏값은 result
# 1부터 10까지 모든 수 더하기
a = addall(1,2,3,4,5,6,7,8,9,10)
print(a)
# 결과
55
'IT > 파이썬3 공부' 카테고리의 다른 글
텐서플로우 tensorflow 2.2.0 설치법과 오류 해결법 (0) | 2020.05.28 |
---|---|
[파이썬 기초] class와 메서드 (0) | 2020.05.23 |
[파이썬 기초] for 반복문 기초 (0) | 2020.05.15 |
[파이썬 기초] while 반복문 기초 (0) | 2020.05.13 |
[파이썬 기초] if 조건문 기본 (0) | 2020.05.11 |
최근댓글