Lesson 2_ Functions - Tutorial
Introduction
이 과정에서는 함수(functions)를 사용한 코드를 구성하는 법을 배워요.
함수는 특정 작업을 수행하기 위해 코드 블록(code block)으로 만들어져요.
따라서 반복적으로 같은 계식을 간단히 줄일 수 있죠.
이제 함수에 대해 알아볼게요.
모든 함수는 헤더(header)와 바디(body)로 이루어져 있어요.
a simple example
- 함수에 대한 이해를 돕기 위한 간단한 예시를 보며 헤더와 바디에 대해 알아보아요.
# Define the function
def add_three(input_var):
output_var = input_var + 3
return output_var
Header
- 헤더는 함수의 이름을 인자(argument)와 함께 정의(definition)하는 부분이에요.
- def로 시작해 인자는 괄호()에 넣어 표시해요.
- 끝에 클론(:)을 꼭 넣어야 해요.
- 예시에서 헤더인 부분은 다음과 같아요.
def add_three(input_var):
Body
- 바디는 함수가 수행하는 작업을 적는 부분이에요.
- 들여 쓰기(4칸의 띄어쓰기 or Tab키)가 되어 있는 상태에서 코드를 작성해야 해요.
- 예시에서는 입력 input_var와 출력 output_var로 이루어져 있어요.
- 예시 마지막에는 return문을 통해 출력값을 반환하고 있어요.
- 예시 코드는 함수를 정의할 뿐 실행하고 있지는 않아요.
- 바디는 원하는 구성에 따라 매우 다양해서 이후에 더 자세히 배울 거예요.
output_var = input_var + 3
return output_var
How to run (or "call") a function
- 함수를 실행(run)하는 것은 "calling"이라고도 해요.
- 위 예시에서 add_there함수를 이용해 10을 입력하는 함수를 만들어 볼게요.
# Run the function with 10 as input
new_number = add_three(10)
# Check that the value is 13, as expected
print(new_number)
13
- 출력(new_number)은 입력에 3을 더하는 것이므로 13이 나오는 것을 확인할 수 있어요.
Naming functions
- 함수의 이름에는 몇 가지 규칙이 있어요.
1) 소문자(lowercase letters)만을 사용해야 해요.
2) 공백(spaces)은 없어야 하고, 대신 밑줄(underscores)로 구분해요.
- 처음에는 어색하더라도, 많이 보면 익숙해질 거예요.
A more complex example
- 이제 기본 사항을 이해해 보았으니, 더 긴 계산을 해보고 예시로 넘어가 볼게요.
- 친구의 세후 주급 계산(weekly paycheck after taxes)을 돕는 상황이에요.
- 친구는 급여의 12%는 세금(tax)으로 내야 해요.
- 시간당 15달러를 급여로 받고 있어요.
- 근무 시간을 기준으로 급여를 계산하고 세금 값을 찾는 과정은 다음과 같아요.
- num_hours 변수를 사용해 pay_pretax 변수를 지정해요.
- pay_pretax 변수를 사용해 pay_ftertax 변수를 지정해요.
- 마지막으로 pay_aftertax 변수를 반환해요.
def get_pay(num_hours):
# Pre-tax pay, based on receiving $15/hour
pay_pretax = num_hours * 15
# After-tax pay, based on being in 12% tax bracket
pay_aftertax = pay_pretax * (1 - .12)
return pay_aftertax
- 40시간을 기준으로 계산한 값은 다음과 같아요.
# Calculate pay based on working 40 hours
pay_fulltime = get_pay(40)
print(pay_fulltime)
528.0
- 다른 근무 시간으로 계산하기 위해서는 다른 변수가 필요해요.
pay_parttime = get_pay(32)
print(pay_parttime)
422.4
- 함수 덕분에 다른 시간에 대한 급여를 쉽게 계산할 수 있었어요.
- 함수는 코드의 오류를 방지하는 데 도움이 되고, 시간도 절약할 수 있어요.
- 계산을 입력할 것이 많을수록 오타(typo)나 오류(error)가 발생할 수 있기 때문에
가능한 줄이도록 해야 해요.
Variable "scope"
- 함수의 바디 안에 있는 변수 값을 출력하게 되면 에러가 발생해요.
- 따라서, 함수 내부에 정의된 변수는 로컬 범위(local scope)를 가지고,
외부에서 출력이 가능한 변수는 전역 범위(global scope)에 정의되어 있다고 해요.
Functions with multiple arguments
- 지금까지는 인수(argument) 하나로 함수를 정의하는 방법을 배웠어요.
- 인수가 여러 개인 함수를 정의하려면 함수 헤더의 괄호 안에 인수를 더 추가하고
쉼표(,)로 구분하면 돼요.
Functions with no arguments
- 인수 없이도 함수는 정의될 수 있어요.
- 대신, 반환문이 없어요.
- 아래 예시러 인수가 없는 함수의 경우를 확인해 볼 수 있어요.
# Define the function with no arguments and with no return
def print_hello():
print("Hello, you!")
print("Good morning!")
# Call the function
print_hello()
Hello, you!
Good morning!
이제 Exercise를 통해 배운 내용을 점검해 보아요.