6 . 함수 - (기본사용법 /구구단출력 / for문 속 함수 / default인자 / 유의점, scope / 기본 제공함수)
2018. 7. 3. 23:16
기본적인 함수 사용법
def^함수명( 인자 ) :
계산식(인자 / 반환받을 변수)
return 변수
의 형태이다.
return 없이 출력만 혹은 계산만 하는 함수도 있다.
이전에 미리 정의된 함수로서, print(), len(), type() 함수 등이 있다. 지금부터는 함수를 만드는 방법에 대해 이야기 해보자.
사용해보기
함수를 정의하고, 그 함수를 사용해서 값을 return하고, 그 리턴 값을 a라는 변수에 넣은 뒤, 출력시켜보자.
만약 계산식이 간단하다면, return 에다가 바로 계산식을 적어줘서 반환변수없이 사용할 수 도 있다.
구구단 함수를 정의해보자
- 먼저, 이전시간에 했던, 2단을 출력하는 코드를 작성해본다.
- 이제, 2단을 j로 바꿀 것인데, 함수에 인자로 들어가서, 원하든 단을 출력하도록 해보자.
* return 이 없는 함수이다. 대신 출력물을 배출한다.
return 이 없는 함수와, return이 있는 함수를 한눈에 보자. - 인자가 2개인 함수도 작성할 수 있다.
- 문자열을 인자로 받을 수 도 있다.
함수를 왜 쓰는가?
mandoo_wage.py
- 시급과 함께, 리스트의 형태로, 직원/ 시작*종료시간 이 주어지고, for문은 리스트를 사용하므로, range(0, len(리스트))를 이용해서
i번째 사람의 근무시간(종료-시간시작), 일당( 근무시간*시급)을 계산한 뒤, 출력해보자.
하지만, 노동법을 생각해서, 일당 시간을 수정해야한다.
- break_time이라는 변수를 만들어서, 4시간 이상 근무를 했다면, 4시간마다( 4로 나눈 몫! ) 0.5(30분)시간씩 곱해져야한다.
그리고 worked 에서 break_time을 뺀 시간이 근무시간이다.
잘못된 부분을 고치는데, 만약 for문이 여러개였다면 이었다면??
노동법을 고려해 수정한 코드인, if worked >= 4 부분을, for문 마다 붙혀넣는 것이 아니라 , 이 부분을 함수로 만들어 함수만 집어넣으면 된다.
- worked_hours 계산하는 것도, 차라리 함수 인자를 work_start_, work_finish 2개로 받으면 된다.
- 기존의 for문 속, worked 계산식은 함수속으로 들어가는 대신, 함수는 2개의 인자를 받게된다.
*이 때, 봉착하는 문제는, print문 속 {}시간 근무에 들어간 format속의 변수 worked다.
*worked 계산식이 함수로 들어가버렸기 때문에 --> 함수에서 wage(일당)뿐만 아니라, worked_hours 도 추가로 반환해주도록 하자. - 함수에서 wage, wokred_hours 2개를 return해줬으면, for문 속에서도 2개의 변수에 받으면 된다.
이렇게 함수를 이용하면 , 반복에 있어서 편하게 할 수 있으며,
수정/보안할 때도, 한번만 해주면 된다
- 시급도 바뀔 수 있다. 시급도 인자로 받아보자.
-def wage_calculator( ar1, ar2, wage_per_hour)로 인자를 추가해주고, 함수 계산식 7530을 wage_per_hour로 바꿔주자.
- 함수를 사용하는 곳으로 가서, 7530을 입력해주자. - 시급을 3번째 인자로 주면서, default값도 =7530으로 지정해주면 ---> 함수를 사용할 때는 인자 2개만 넣어도 된다!
자동으로 7530이 3번째 인자로 인식된다.
- 만일 디폴트값이 없다면, 함수사용시 3번째 인자 대입을 빠트리면 안된다 - 시급을 default인 7530원이 아닌 다른 값으로 주고 싶다면, 함수사용시 2개의 인자만 있었던 곳에, 3번째 인자를 대입해주면 된다.
함수 만들시 유의점
- 목적이 명확한 표형으로 함수명 작성
- 함수명은 소문자와 언더바(_)로 작성하는게 정석
- 파라미터(인자)도 소문자로
- 한 함수는 한가지 기능만 & 한 화면이상 넘어가지 않게 작성하는 것이 좋다.
함수와 scope
함수 속의 인자인 x와 y는 함수안에서만 의미가 있다.
파이썬에서 이미 만들어져 제공하는 함수
input() : 사용자 입력을 기다렸다가, 차례대로 실행된다. / 숫자도 문자열로 받는다. / 인자는 '문자열'로 안내문 역할을 할 수 있다.
- 파이참에서는 기본적으로 제공하는 함수에 대해 보라색으로 표시된다.!
- 함수를 실행시키면 아무것도 안일어난 것 같지만, 콘솔창에 마우스를 찍어보면, 커서가 깜박인다. 입력을 받을 수 있는 상태이다.
- 이 때, 어떤 값을 입력하면, 초록색으로 사용자의 입력값이 표시되고, 엔터를 치면 ---> a에 저장된다음, print()함수를 타게된다.
- 문자열도 입력가능하다
- input()인자에는 사용자입력에 대한 안내를 작성할 수 있다.
- 구구단 프로그램의 단수를 입력받아보자.
- 역시 먼저 2단을 작성한 다음, 단수를 x로 입력받는 함수를 만들어보자.
- 위와 같이 7단이 아니라, 7의 갯수가 연이서 나타나는 이유는 input()으로 받은 것은 문자열이기 때문이다.
- a의 type을 확인해보기 위해, type(a)를 print로 출력해보자.
* type(a)만 입력하면 아무것도 나타나지 않음. print( type() ) 은 쌍으로 생각하자. - input()으로 받은 사용자입력 [문자열]을 int형으로 바꾸는 함수가 int()이다.
- 만약 사용자 입력이 문자열인 경우 int( 문자열 ) 하면 에러가 난다. 문자열 숫자 -- > int() --> 정수 숫자만 가능하다. - 구구단함수를 다시 호출해보자( range (1, 10)까지 해야 1부터 9까지.. 앞에는 오타)
'빅데이터 관련 프로그래밍 > Python3 기초 및 업무자동화' 카테고리의 다른 글
8. 클래스(class)와 인스턴스(instance) 및 생성자 (0) | 2018.07.04 |
---|---|
7. 파일 쓰기( TXT /CSV ) (0) | 2018.07.04 |
5. 반복문 - while 과 for 그리고 응용(홀짝구분/구구단/리스트요소들 출력) (0) | 2018.07.02 |
4. 파이참 프로젝트 생성 후 버전관리 + 조건문 학습 (0) | 2018.07.02 |
3. 파이썬 기초 문법 - 산술-비교연산자 / 변수와 숫자 / 문자열과 .format / Boolean, 리스트 (0) | 2018.06.30 |