Python

함수 사용

haventmetyou 2023. 10. 16. 12:33

함수는 def에 함수 이름을 지정하고 ()(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성

> 반드시 들여쓰기

def는 정의하다의 define

 

함수 작성 및 호출
def hello():
    print('Hello, world!')

hello()

 

함수 결과 반환
def add(a, b):
    """이 함수는..."""
    return a + b
x = add(10, 20)
print(x)

print(add.__doc__)

add 함수에 "(큰따옴표) 세 개로 독스트링(설명) 추가

> 함수를 호출해도 독스트링은 출력되지 않음

함수의 __doc__으로 독스트링 출력

def add(a, b):
    result = a + b
    return result

x = add(10, 20)
print(x)

# 출력 값 30
def add():
    return 'hello'

x = add()
print(x)

# 출력 값 hello

 

 

>>> def not_ten(a):
...     if a == 10:
...         return    # 변수 a 값이 10이면 반환(빈값)
...     print(a, '입니다.', sep='')
...
>>> not_ten(5)
5입니다.
>>> not_ten(10)
>>>

return으로 함수 중간에서 빠져나오기

 

함수에서 값을 여러 개 반환
def add_sub(a, b):
    return a + b, a - b

x, y = add_sub(10, 20)
print(x)
print(y)

z = add_sub(100, 200)
print(z)

# 출력 값
30
-10

(300, -100)

return으로 값을 여러 개 반환하면 튜플이 반환됨

결과를 변수 한 개에 저장해 출력해 보면 튜플이 반환

 

함수에서 값 여러 개 직접 반환

def one_two():
    return 10, 20

x, y = one_two()
print(x, y)

#  출력 값
10 20

def one_two():
    return (1, 2)

x, y = one_two()
print(x, y)

# 출력 값
1 2

여러 개를 직접 반환할 때는 return에 튜플을 지정

괄호 없이 콤마로 구분하면 튜플이 되므로 튜플 1, 2는 튜플 (1, 2)와 같다

return 1, 2도 return (1, 2)와 같음

리스트도 직접 반환해도 됨 / 여러 개 저장 가능

 

함수의 호출 과정
def mul(a, b):
    c = a * b
    return c

def add(a, b):
    c = a + b
    print(c)
    d = mul(a, b)
    print(d)

x = 10
y = 20
add(x, y)

# 출력 값
30
200

 

연습 문제 예제
 29.7번 연습 문제: 몫과 나머지를 구하는 함수 만들기

x = 10
y = 3

def get_quotient_remainder(a, b):
    return a // b, a % b
quotient, remainder = get_quotient_remainder(x, y)
print( '몫: {0}, 나머지: {1}'.format(quotient, remainder) )

# 실행 결과
몫: 3, 나머지: 1

# 29.8번 심사 문제: 사칙 연산 함수 만들기
# 표준 입력으로 숫자 두 개가 입력됩니다. 다음 소스 코드를 완성하여 두 숫자의 덧셈, 뺄셈, 곱셈, 나눗셈의 결과가 출력되게 만드세요.
# 이때 나눗셈의 결과는 실수라야 합니다.

x, y = map( int, input().split() )

def clac(x, y):
    return x + y, x - y, x * y, x / y
a, s, m, d = clac(x, y)
print( '덧셈: {0}, 뺄셈: {1}, 곱셈: {2}, 나눗셈: {3}'.format(a, s, m, d) )

# 표준 입력
10 20
# 실행 결과
덧셈: 30, 뺄셈: -10, 곱셈: 200, 나눗셈: 0.5

# 표준 입력
40 8
# 실행 결과
덧셈: 48, 뺄셈: 32, 곱셈: 320, 나눗셈: 5.0

 

연습 문제 예제 2
# 다음과 같이 표현되도록 코드를 작성하시오.

# 덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: 1
# 첫 번째 값을 입력: 10
# 두 번째 값을 입력: 20

# ----------------------
# 입력 값: 10, 20
# 결과 값: 10 + 20 = 30
# ----------------------

choice = int(input('덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: '))
x = int(input('첫 번째 값을 입력: '))
y = int(input('두 번째 값을 입력: '))
print()
print('----------------------')
def clac(x, y):
    print('입력 값:', x, ',', y)
    if choice == 1:
        result = x + y
        return print('결과 값: {0} + {1} = {2}'.format(x, y, x + y))
    elif choice == 2:
        result = x - y
        return print('결과 값: {0} - {1} = {2}'.format(x, y, x - y))
    elif choice == 3:
        result = x * y
        return print('결과 값: {0} x {1} = {2}'.format(x, y, x * y))
    elif choice == 4:
        result = x / y
        return print('결과 값: {0} ÷ {1} = {2}'.format(x, y, x / y))
    else:
        pass
    return result
clac(x, y)
print('----------------------')

# 실행 결과

덧셈 1, 뺄셈 2, 곱셈 3, 나눗셈 4: 1
첫 번째 값을 입력: 10
두 번째 값을 입력: 20

----------------------
입력 값: 10 , 20
결과 값: 10 + 20 = 30
----------------------