기본적인 함수 사용법

깃허브

image

def^함수명( 인자 ) :
계산식(인자 / 반환받을 변수)
return 변수

의 형태이다.

return 없이 출력만 혹은 계산만 하는 함수도 있다.

이전에 미리 정의된 함수로서, print(), len(), type() 함수 등이 있다. 지금부터는 함수를 만드는 방법에 대해 이야기 해보자.


사용해보기

함수를 정의하고, 그 함수를 사용해서 값을 return하고, 그 리턴 값을 a라는 변수에 넣은 뒤, 출력시켜보자.
image

만약 계산식이 간단하다면, return 에다가 바로 계산식을 적어줘서 반환변수없이 사용할 수 도 있다.
image


구구단 함수를 정의해보자

  • 먼저, 이전시간에 했던, 2단을 출력하는 코드를 작성해본다.
    image

  • 이제, 2단을 j로 바꿀 것인데, 함수에 인자로 들어가서, 원하든 단을 출력하도록 해보자.
    * return 이 없는 함수이다. 대신 출력물을 배출한다.
    image

    return 이 없는 함수와, return이 있는 함수를 한눈에 보자.
    image


  • 인자가 2개인 함수도 작성할 수 있다.
    image


  • 문자열을 인자로 받을 수 도 있다.
    image


함수를 왜 쓰는가?

mandoo_wage.py

  • 시급과 함께, 리스트의 형태로, 직원/ 시작*종료시간 이 주어지고, for문은 리스트를 사용하므로, range(0, len(리스트))를 이용해서
    i번째 사람의 근무시간(종료-시간시작), 일당( 근무시간*시급)을 계산한 뒤, 출력해보자.
    image


하지만, 노동법을 생각해서,   일당 시간수정해야한다.

  • break_time이라는 변수를 만들어서, 4시간 이상 근무를 했다면, 4시간마다( 4로 나눈 몫! ) 0.5(30분)시간씩 곱해져야한다.
    그리고 worked 에서 break_time을 뺀 시간이 근무시간이다.
    image


잘못된 부분을 고치는데, 만약 for문이 여러개였다면 이었다면??

노동법을 고려해 수정한 코드인, if worked >= 4 부분을, for문 마다 붙혀넣는 것이 아니라 , 이 부분을 함수로 만들어 함수만 집어넣으면 된다.

  •  wage_calculator( worked_hours )라는 함수를 만들어, if 4시간 이상시  와 시급 곱해주는 것을 넣어서, 바꿔주자.
    image


  • worked_hours 계산하는 것도, 차라리 함수 인자를 work_start_, work_finish 2개로 받으면 된다.
    - 기존의 for문 속, worked 계산식은 함수속으로 들어가는 대신, 함수는 2개의 인자를 받게된다.
    *이 때, 봉착하는 문제는, print문 속 {}시간 근무에 들어간 format속의 변수 worked다.
    *worked 계산식이 함수로 들어가버렸기 때문에 --> 함수에서 wage(일당)뿐만 아니라, worked_hours 도 추가로 반환해주도록 하자.
    image

  • 함수에서 wage, wokred_hours  2개를 return해줬으면, for문 속에서도 2개의 변수에 받으면 된다.
    image

이렇게 함수를 이용하면 , 반복에 있어서 편하게 할 수 있으며,
수정/보안할 때도, 한번만 해주면 된다


  • 시급도 바뀔 수 있다. 시급도 인자로 받아보자.
    -def wage_calculator( ar1, ar2, wage_per_hour)로 인자를 추가해주고, 함수 계산식 7530을 wage_per_hour로 바꿔주자.
    - 함수를 사용하는 곳으로 가서, 7530을 입력해주자.
    image


  • 시급을 3번째 인자로 주면서, default값도 =7530으로 지정해주면 ---> 함수를 사용할 때는 인자 2개만 넣어도 된다!
    자동으로 7530이 3번째 인자로 인식된다.
    - 만일 디폴트값이 없다면, 함수사용시 3번째 인자 대입을 빠트리면 안된다
    image
    image


  • 시급을 default인 7530원이 아닌 다른 값으로 주고 싶다면, 함수사용시 2개의 인자만 있었던 곳에,  3번째 인자를 대입해주면 된다.
    image


함수 만들시 유의점

  1. 목적이 명확한 표형으로 함수명 작성
  2. 함수명은 소문자와 언더바(_)로 작성하는게 정석
  3. 파라미터(인자)도 소문자로
  4. 한 함수는 한가지 기능만 & 한 화면이상 넘어가지 않게 작성하는 것이 좋다.


함수와 scope

함수 속의 인자인 x와 y는 함수안에서만 의미가 있다.

image


파이썬에서 이미 만들어져 제공하는 함수

input() : 사용자 입력을 기다렸다가, 차례대로 실행된다. / 숫자도 문자열로 받는다. / 인자는 '문자열'로 안내문 역할을 할 수 있다.
- 파이참에서는 기본적으로 제공하는 함수에 대해 보라색으로 표시된다.!

  • 함수를 실행시키면 아무것도 안일어난 것 같지만, 콘솔창에 마우스를 찍어보면, 커서가 깜박인다. 입력을 받을 수 있는 상태이다.

  • image
    image

  • 이 때, 어떤 값을 입력하면, 초록색으로 사용자의 입력값이 표시되고, 엔터를 치면 ---> a에 저장된다음,  print()함수를 타게된다.
    image

  • 문자열도 입력가능하다
    image


  • input()인자에는 사용자입력에 대한 안내를 작성할 수 있다.
    image
    image

  • 구구단 프로그램의 단수를 입력받아보자.
    - 역시 먼저 2단을 작성한 다음, 단수를 x로 입력받는 함수를 만들어보자.
    image
    image
    - 위와 같이 7단이 아니라, 7의 갯수가 연이서 나타나는 이유는 input()으로 받은 것은 문자열이기 때문이다.
    - a의 type을 확인해보기 위해, type(a)를 print로 출력해보자.
      * type(a)만 입력하면 아무것도 나타나지 않음.  print( type() ) 은 쌍으로 생각하자.
    image

  • input()으로 받은 사용자입력 [문자열]을 int형으로 바꾸는 함수가 int()이다.
    - 만약 사용자 입력이 문자열인 경우 int( 문자열 ) 하면 에러가 난다. 문자열 숫자 -- > int() --> 정수 숫자만 가능하다.
    image

  • 구구단함수를 다시 호출해보자( range (1, 10)까지 해야 1부터 9까지.. 앞에는 오타)
    image

+ Recent posts