생성한 함수를 실행 시 print문으로 출력하는 것 외 실제 연산을 통한 결과를 생성하려면 어떻게 해야 할까? 또 함수에 들어가는 변수들의 값 중 항상 일정하게 고정되어 들어가는 값이 있다면 미리 세팅해두면 편하지 않을까? 이 두 가지에 대해서 return의 사용법과 함수의 초기값 설정에 대해서 알아보자.
1. return 명령어 사용법
지금까지의 함수 생성에 대한 예시에서는 사용하지 않았지만 return은 함수 생성 시 대부분 포함하여 만드는 경우가 많다.
a+b 등과 같은 연산의 결과를 반환하기 위해 사용된다.
아래 예시를 보면 두 수의 합이 홀수인 경우와 짝수인 경우 다른 연산을 하게 만들었다. if문을 이용하여 홀수인 경우는 합을, 짝수인 경우는 곱으로 연산하게 하였다. 두 수의 합이 짝수인지 홀수인지를 판단하기 위해 이전에 배웠던 기초 연산자에서 나머지를 구하는 연산자로 두 수의 합이 홀수인지 짝수인지 판단했다.
[파이썬] 기초문법(2) - 기초 연산자/함수 사용 (tistory.com)
나머지가 1인 경우는 홀수이기 때문에 print문을 통해 홀수에 대한 코멘트를 출력하고 return문으로 두 수의 합을 반환하게 만들었다. else 문을 활용하여 그 외의 경우는 짝수로 판단한다. 짝수인 경우는 print문으로 짝수에 대한 코멘트를 출력하고 return 문으로 두 수의 곱을 반환한다.
함수명은 test이며 함수 실행한 부분을 보면 2와 3의 값을 입력하였다. 두 수를 더하면 5로써 2로 나누면 나머지가 1이 남게 되어 홀수로 판단되어 "두 수의 합이 홀수입니다/ 홀수는 두 수의 합으로 계산합니다"라는 print문의 내용을 출력하게 되고 a + b를 연산한 5를 반환한다.
2. 함수 초기값 설정
만약에 함수에 들어가는 변수 중 대학교 신입생의 연령과 연령대를 출력하는 함수를 만든다고 해보자. 그렇다면 대부분의 신입생 연령은 20대일 것이다. 만약 10명의 신입생이 있는데 그중 9명은 20대이고 1명은 30대라고 하자. 그렇다면 계속 변숫값에 "20대"라고 써야 할까?
9명은 20대이기 때문에 초기값, 기본으로 입력되는 값을 20대라고 쓰고 혹시 20대가 아닌 경우만 해당 변수에 다른 값을 입력하도록 초기값을 설정해주면 연령대의 값은 한 번만 입력해주면 된다. 아래 예시를 보자.
초기값 설정은 함수를 정의하는 부분의 변수명에 입력해주면 된다. age_info라는 함수명에는 age와 age_grp라는 두 개의 변수가 있는데, age는 신입생의 연령을 입력하는 부분으로 연령은 다양할 수 있기 때문에 초기값은 설정해주지 않는다.
다음으로 age_grp는 연령대의 변수이며, 연령대는 대부분 20대라는 정보를 우리는 알고 있다고 하자. 따라서 age_grp는 기본값으로 "20대"라는 값이 입력될 수 있도록 아래와 같이 age_grp = "20대"라고 쓰면 함수 실행 시 해당 변수에 아무런 값을 입력하지 않으면 기본으로 "20"라는 값으로 입력되게 된다.
총 10명의 신입생이 있어서 10번의 함수를 실행했다. 맨 마지막 10번째 신입생의 경우만 31살로 20대가 아닌 30대 신입생이다. 나머지 9명의 경우는 age_info 함수의 age_grp의 값은 초기값인 "20대"를 쓰면 되므로 실행 시 연령 값만 입력해준 것을 볼 수 있고, 맨 마지막 학생인 30대의 경우만 연령과 연령대의 값을 초기값이 아닌 "30대"로 출력하기 위해 변숫값을 하나 더 입력해 주었다.
이와 같이 초기값의 경우는 반복 작업 시 빈도가 높은 경우의 입력값을 매번 입력하지 않도록 하는 경우 유용하게 사용된다.
'방구석코딩 > 파이썬 기초문법' 카테고리의 다른 글
파이썬 코딩 툴 비교 (0) | 2022.06.26 |
---|---|
[파이썬 독학] 데이터 분석 - 함수 만들기 : 변수 적용 범위 (0) | 2022.06.24 |
[파이썬 독학] 입력값의 수가 정해지지 않은 경우 함수 생성 (0) | 2022.06.15 |
[파이썬 독학] 데이터 분석 - 함수 만들기 (0) | 2022.06.13 |
[파이썬 데이터 분석] 또 다른 반복문 ② - For문 응용, break, continue, pass (0) | 2022.06.07 |
댓글