본문 바로가기
Python

[파이썬] 파이썬 함수: def, return, lambda, default parameter

by eyoo 2022. 4. 26.

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

 

 

 

 

 

댓글