주경야매 미국주식

파이썬의 함수 본문

파이썬

파이썬의 함수

주경야매 2022. 6. 22. 22:03

기초 문법과 for, if 만 알면 어지간한 프로그램은 다 만들 수 있다. 그럼에도 불구하고 함수(function), 클래스(class)를 배우는 건 이들을 이용하면 복잡한 프로그램을 좀 더 수월하게 짤 수 있기 때문이다.


문법

함수는 중학교에서 배운 바로 그것, '특정한 기능을 하는 기계'다. 한 번 만들어두면 필요할 때마다 소환해 사용할 수 있다. 그래서 만드는 법과 사용법을 알아야 한다.

함수 만들기

def 함수명(입력값1, 입력값2, ...):
    처리 코드
    ~
    return 반환값

함수를 만든다는 선언은 def 로 하고, 문장 끝에 콜론(:)을 붙인다. 함수의 내용은 들여 쓰기를 한다.
입력값은 필요한 만큼 정해준다. 필요 없다면 괄호 안을 빈칸()으로 둔다.
반환값은 함수가 정해진 기능을 처리하고 돌려주는 값이다. 값을 돌려줄 필요가 없다면 return 구문 자체를 생략한다.

함수 사용하기

함수명(입력값1, 입력값2, ...)

필요한 위치에서 위와 같이 쓰면 해당 함수가 실행된다. 주의할 점은 사용하기 전에 함수를 미리 만들어놔야 한다는 것이다. 


예제

미국에서는 레스토랑에서 밥을 먹으면 세금과 팁을 추가로 낸다. 뉴욕시의 부가세율은 8.88%, 평균적인 팁은 15%인데, 이걸 계산하는 코드를 만들어보자.

def cal_tax(before_tax):
    after_tax = before_tax * 1.0888
    return after_tax

함수명은 cal_tax 라고 지정하고, 입력값으로 세전 금액(before_tax)을 받는다.
함수 안으로 들어가면, 세전 금액에 세율인 8.88%를 추가해 세후금액(after_tax)을 계산한 후,
마지막 행에서 after_tax 값을 반환한다.

함수를 실행하려면 간단히 함수명(입력값) 을 치면 된다.

cal_tax(100)

> 108.88

이번에는 팁을 계산하는 함수

def cal_tip(before_tip):
    after_tip = before_tip * 1.15
    return after_tip

코드 구조는 위와 동일하다. 

실행도 마찬가지.

cal_tip(100)

> 114.99999999999999

어, 이상하다. 답이 115가 아닌 115와 가까운 숫자가 나온다.


걱정하지 마시라. 코딩이 잘못된게 아니라 컴퓨터가 소수를 처리하는 과정에서 발생하는 문제로 '부동소수점' 처리를 하는 대부분의 프로그래밍 언어에서 공통적으로 발생하는 현상이다. 

https://docs.python.org/ko/3/tutorial/floatingpoint.html

 

15. 부동 소수점 산술: 문제점 및 한계 — Python 3.10.5 문서

15. 부동 소수점 산술: 문제점 및 한계 부동 소수점 숫자는 컴퓨터 하드웨어에서 밑(base)이 2인(이진) 소수로 표현됩니다. 예를 들어, 소수 는 1/10 + 2/100 + 5/1000의 값을 가지며, 같은 방식으로 이진

docs.python.org


그럼 실제 레스토랑에서처럼 원금 + 세금 + 팁 까지 한꺼번에 계산하려면 어떻게 할까?

세금을 계산하는 함수를 먼저 실행하고, 그 결괏값을 팁 계산 함수에 넣어주면 되겠다.

a = cal_tax(100)
cal_tip(a)

이렇게 세금까지 처리한 금액을 a 에 저장한 다음, a 를 다시 팁 함수에 넣어 처리할 수도 있고

cal_tip(cal_tax(100))

이렇게 한 줄로 처리할 수도 있다.


코드를 반복해서 사용할게 아니라면, 또는 코드가 심플하다면 굳이 함수를 만드는 수고를 할 필요는 없다. 함수란,

  • 똑같은 작업이 반복될 때, 노가다를 줄이기 위해
  • 코드가 복잡해질 경우, 가독성 개선을 위해

사용하는 코드의 집합체다.

Comments