1. 공부한 내용
1) 함수의 개념 (내장 함수/외장 함수) 확인
2) 함수를 직접 만들고 정의하는 방법 및 return 값에 대한 의미 숙지
3) 직접 만든 함수(외장 함수)에 입력값을 지정하는 방법 숙지
4) 직접 함수를 만들어서 로그인 어플리케이션 작성
2. 실습 내용
No | 입력 코드 | 결과 | 설명 |
1 | def a3(): print('aaa') a3() | aaa | 1. 함수를 지정하는 함수 정의 함수 지정을 위한 함수는 def 임 <def a3():>로 작성하면 a3라는 이름의 함수가 정의됨 |
2 | def a3(): return 'aaa' print(a3()) | aaa | 2. 함수를 지정할 때 return 값의 존재 유무에 따른 차이 ①return 값이 존재 하지 않으면 - def에 지정된 내장 함수의 값만 출력 (print, len 등) - 내장 함수도 없는 경우, None를 출력함 - 즉, 함수가 호출되도 아무런 값도 반환되지 않음 ②return 값이 존재하면 - def에서 최종 계산/연산된 값이 함수가 호출된 지점에 반환함 - 내장 함수(print, len 등)이 없는 경우 프로그램 상에서는 아무런 값도 표시 되지 않으나 해당 함수의 값은 존재함 - 함수를 정의함으로서 해당 반환된 값을 언제든 호출하여 활용할 수 있음 - return 이후 해당 함수 연산이 끝나기 때문에 def 안에 존재하는, return 이후의 코드는 실행 안 됨 |
3 | num = input("a를 몇 번 반복하시겠습니까? \n") def a(num): return 'a' * int(num) print(a(num)) * 실습 코드에서 <input>를 추가해봄! | (입력) 5 (출력) aaaaa | 3. 지정 함수에 입력값을 부여하는 방법 def로 정의한 함수 안(괄호 안)에 변수를 지정하여 값을 입력할 수 있음 즉, 함수 안에 num라는 변수를 지정 후 5라는 입력값을 받아 print로 해당 함수를 호출하면, 정의한 함수 안의 계산식 ('a' * num)을 return 해서 출력됨 기존 실습 예제에 input를 활용하여, 실제 사용자의 입력값을 받아서 계산하는 코드로 바꿔봄 ㅎㅎ (int는 입력값을 정수로 인식하기 위한 코드) |
4 | def make_string(str, num): return str * num print(make_string('abc\n', 2)) | abc abc | 4. 외장 함수에 여러 개의 입력 값을 넣기 def로 정의한 함수 안(괄호 안)에 여러 개의 변수를 지정하여, 1개가 아닌 여러 개의 입력 값을 받아 함수 값을 호출 할 수 있음 왼쪽 예제의 경우, 먼저 make_string 라는 함수 안에 str, num 라는 변수를 지정 후 그 아래에 <str * num> 값이 <return> 되는 함수를 정의함 이후 make_string 함수를 print할 때, 각각 str과 num에 해당하는 변수 값을 지정(abc, 2)하면 함수에 입력된 <str * num> 라는 코드에 따라 계산된 값이 <return> 됨
|
5 | def login(_id): members = ['har', 'space', 'SDM'] for member in members: if member == _id: return True return False input_id=input("아이디를 입력해주세요. \n") if login(input_id): print('hello!, ' + input_id) else: print('Who are you?') | 아이디를 입력해주세요 (입력) har (출력) Hello!, har (입력) space (출력) Hello!, space (입력) SDM (출력) Hello!, SDM (입력) adsahkdasjdlk (출력) who are you? | 5. 로그인 어플리케이션의 코드를 함수로 지정하기 1) <def login(_id):>라는 함수에 로그인 어플리케이션 코드 입력 2) 해당 함수에 기존에 존재했던 list(members), for문을 그대로 입력 3) 만약(if) 함수의 변수(_id)가 for문의 member(members list)와 같으면, 함수값으로 <True>를 return함 (이후 함수 연산 종료) 4) 함수의 변수(_id)가 같지 않으면, for문(반복문)의 if가 종료 되지 않으므로, for문의 아래에 <False>를 return함 (이후 함수 연산 종료) 5) 변수 값의 연결 고리 - input_id -> login(input_id) -> 외장 함수 login(_id) -> for, if문 _id - har 입력 -> login(har) -> 외장 함수 login(har) -> for, if문 _id = har * 함수의 변수값(_id)을 지정할 때는 내장 함수와 겹치지 않도록 설정 * for문 안에는 <return>이든 기존에 배운 <import sys, sys.exit>로 맺어야 함수 연산이 정상적으로 종료됨 |
3. 응용 내용
만들고자 하는 코드 | 만들어본 코드 | 결과 | 설명 |
원가와 마진을 입력하면, 단가가 산출되는 코드 (관세는 8%로 고정) | def margin(_mg): return 1 - float(_mg) def price(_tp): duty = 1.08 return int(_tp) * duty input_tp=input("TP를 입력해주세요. \n") input_margin=input("마진을 입력해주세요. \n (관세는 8% 고정. 마진 5%인 경우, 0.05 입력) \n") import math print(math.ceil(price(input_tp)/margin(input_margin))) | TP를 입력해주세요. (입력) 200 마진을 입력해주세요. (관세는 8% 고정. 마진 5%인 경우, 0.05 입력) (입력) 0.05 (결과) 228 | ... 만들어 놓고 보니 뭔가 삽질한 느낌이 물신 나지만... 어쨌든 def를 이용하여 각각, 원가에 관세 8%를 계산한 값을 리턴, 마진을 계산한 값을 리턴하여 관세 8%에 마진이 계산된 단가를 산출 이렇게 안 해도 되는 건데...;; 어쨌든 응용해봄! |
4. 의미/중요한 부분
1) 함수를 정의하여 작성하는 코드는, 해당 file 안에 대량의 코드를 입력하거나, 해당 함수가 반복적으로 이루어지거나, 동시에 여럿이서 수정을 할 때 유용함
2) 단 한 번의 연산을 하는 내용은, 굳이 함수 정의를 할 필요는 없음
3) return 값의 유무에 따라 정의한 함수의 값이 달라지니 주의!
5. 궁금점/감상
1) 함수가 값을 입력 받아 값을 반환하는 과정을 여러 번 복습할 필요가 있어 보임... (헷깔려 ㅠㅠ)
'1_Python' 카테고리의 다른 글
14. 객체 (Class) / 객체 지향 프로그래밍 (0) | 2019.01.13 |
---|---|
13. 모듈 (Module) (0) | 2019.01.12 |
11. 컨테이너와 반복문 (0) | 2019.01.03 |
10. 반복문 (0) | 2018.12.15 |
9. 컨테이너 (Container) (0) | 2018.12.15 |