FUNCTIONS
- 함수란, 재사용 되는 코드 블럭이다.
- Data or arguments 가 전달되고, 결과가 return 된다.
- 프로그래밍 하다가, 반복되거나 재사용 되는 코드 블럭이 있으면, 이를 함수로 만들면 된다.
- 남들이 재사용 잘 되는 함수들을 미리 만들어 놓은 것도 있는데, 이를 라이브러리라고 한다.
화씨를 절대온도로 바꾸는 함수를 만들었다
def fahr_to_kelvin(temp):
result = (temp-32) * (5/9)+ 273.15
return result
# def는 함수의 정의, 그 뒤엔 함수의 이름, 괄호 안에는 변수 (파라미터)가 온다.
# 밑줄에 함수의 정의를 내려준다.
# 리턴은 함수 결과를 돌려놓는다.
# 함수를 실행하면 먼저 변수를 받고 함수를 계산하며 함수 계산 결과가 리턴에 의해 표시된다.
# 함수 실행이 완료되면 함수에 입력되어 저장되었던 변수와 결과값은 다시 초기화 된다.
함수의 호출:
in:
fahr_to_kelvin(100)
out:
310.92777777777775
return 이 없는 함수
in:
def my_function():
print('hello')
print('bye')
my_function()
out:
hello
bye
return이 없는 함수는 변수설정이 되지 않는다.
in:
a = my_function()
print(a)
out:
hello
bye
None
# 변수 a가 None으로 출력됨
Parameter가 하나인 함수
어떤 숫자 1개를 함수의 파라미터로 입력받으면 그 숫자를 제곱해서 리턴하는 함수를 만들자
in:
def squared(number):
result = number**2
return result
squared(9)
out:
81
Parameter가 두개인 함수
어떤 숫자를 넣고, 그리고 그 숫자를 몇번 제곱할지를 넣으면 해당숫자를 몇번 제곱하여 리턴하는 함수를 만들자
in:
def pow_times(number,power):
result = number ** power
return result
pow_times(2,3)
out:
8
Return 값이 둘 이상인 함수
숫자 두개를 입력받으면, 그 숫자들로 나눈 몫과 나머지를 리턴하는 함수를 만들자
in:
def my_func(num1, num2):
result1 = num1 // num2
result2 = num1 % num2
return result1, result2
my_func(5,3)
out:
(1, 2)
# return할 결과값이 두개면 결과값 변수를 두개로 설정하면 된다.
함수의 결과값을 리스트로 만들고 싶을때
in:
def my_func2(num1, num2):
result1 = num1 // num2
result2 = num1 % num2
return [result1, result2]
my_func2(5,3)
out:
[1, 2]
# return할 결과값을 리스트형식으로 감싸주면 된다.
Default parameter
나이를 입력받으면 나이가 몇인지 화면에 출력하는 함수를 만들자
in:
def hello(age):
print('제 나이는 {}살 입니다'.format(age))
hello(28)
out:
제 나이는 28살 입니다
# 만약 함수안에 아무 값도 넣지 않으면 에러가 나온다.
디폴트 파라미터를 이용해, 데이터를 아무것도 넘겨주지 않으면 그냥 33살로 처리해주게끔 할수있다.
in:
def hello(age = 33):
print('제 나이는 {}살 입니다'.format(age))
hello()
out:
제 나이는 33살 입니다
# 함수 파라미터 옆에 =기호로 기본값을 설정해주면 된다.
여러개의 디폴트 파라미터를 설정해줄수 있다.
in:
def say_hello(name = '홍길동', age = 33):
print('제 이름은 {}이고, 나이는 {}살 입니다.'.format(name,age))
say_hello()
out:
제 이름은 홍길동이고, 나이는 33살 입니다.
위 함수를 이용하며 name 값만 다르게 해서 출력하고 싶을때
in:
say_hello('김길동')
out:
제 이름은 김길동이고, 나이는 33살 입니다.
# 파라미터에 이름만 입력하고 함수를 실행시키면 된다.
LAMBDA EXPRESSIONS
- Lambda function 은 anonymous function 이다. 즉 함수 이름이 없다.
- Lambda functions 은 주로 filter(), map() , reduce() 함수와 함께 사용된다.
- 파라미터는 많아도 상관없지만, 연산은 딱 한줄이어야 한다.
입력받은 숫자를 제곱하는 함수:
def pow_some(number):
return number**2
위 함수를 람다 함수로 새로 만든다고 한다면:
pow_some2 = lambda number : number ** 2
# 설정해줄 변수를 함수이름으로 정하고 lambda를 입력 후 파라미터와 콜론 ' : ' 그리고 함수의 식을 쓰면 된다.
[실습]
과일 등급을 반환하는 함수를 작성하세요.
1. 함수의 인풋으로 과일 크기를 입력으로 받으면, 등급을 리턴하는 함수를 작성하세요.
2. 계속하여 유저한테 직접 과일 크기를 입력받아서 등급을 출력하세요. 단, 유저가 -1 을 입력하면, 프로그램을 종료합니다.
def fruit_size(size):
if 16 <= size <= 30:
return 'A'
elif 8 <= size <= 15:
return 'B'
elif 1 <= size <= 7:
return 'C'
else:
return '없는'
while True:
size = input('과일크기를 입력해주세요: ')
size = int(size)
if size == -1:
break
result = fruit_size(size)
print(result+'등급입니다.')
※ 전체 프로그램을 이루는 코드와 함수를 구분하여 작성하는것에 유의해야 된다.
함수 인풋으로 숫자 두개, 문자열 1개를 입력받아서, 더하기와 곱하기 연산을 하고, 리턴하는 함수를 만드세요.
def cal(value1, value2, operator_str):
if operator_str == 'add':
result = value1 + value2
elif operator_str == 'mul':
result = value1 * value2
return result
댓글