본문 바로가기
Language/Python

[Python] 함수(2) / 예제로 공부하는 Python 100 문제풀이

by 애기 개발자 2022. 5. 9.
반응형

함수 응용이다.

 

두달 반만에 오랜만에 공부했다.

 

시작

 

 

1. 하나의 변수, 여러개의 리턴값

#함수 호출시 입력 파라미터값을 지정하여 함수를 호출하는 예제
def my_func(id_, name_, strength):
    return id_, name_, strength

result = my_func("id", "name", "str")
print(result, type(result))
#('id', 'name', 'str') <class 'tuple'>
#변수 1개 - 리턴값 여러개 > 튜플 리턴

 

my_func()에 3개의 파라미터가 있고

 

result = my_func( ... ) 로 3개의 파라미터를 온전히 던져준다.

 

return 또한 들어온 값 그대로 3개의 값을 돌려준다.

 

이때 돌아온 리턴값의 값과 타입을 확인해보면

 

( ... ) 로 둘러쌓인 튜플의 형태로 돌아온다.

 

즉 하나의 변수에 여러개의 리턴값을 넣으면 '하나의 튜플'이 리턴된다고 보면 된다.

 

2. n개의 변수, n개의 리턴값

def my_func(id_, name_, strength):
    return id_, name_, strength

a, b, c = my_func("aaa", "bbb", "ccc")
print("a - ", a, " b - ", b, " c - ", c, type(a))
#a -  aaa  b -  bbb  c -  ccc <class 'str'>
#변수 n개 - 리턴값 n개 > 각각 할당

'''
d, e = my_func(1, 2, 3)
print(d, e)
 -> Error!!!
'''

함수는 위와 동일하고

 

기존에는

 

result = my_func( ... )

에서

a, b, c = my_func( ... ) 로 변경되었다.

 

각각 파라미터값으로 aaa, bbb, ccc 값을 던져 줫고

 

리턴된 형태는

a - aaa, b - bbb, c - ccc

에 str 형식으로 리턴 되었다.

 

튜플을 각각 할당해준것과 동일한 효과로 만약

 

파라미터값으로 int형 값을 던져주면 리턴값도 int로 돌아온다.

 

단 예외적으로

 

리턴되는 개수와, 할당을 받을 변수의 개수가 다르면 에러가 발생한다. 주의.

 

22 함수, 호출, 파라미터.py

 

GitHub - Kim-myoung-jun/Python-Practice

Contribute to Kim-myoung-jun/Python-Practice development by creating an account on GitHub.

github.com

 

3. 디폴트 파라미터

디폴트 파라미터는

 

함수를 선언할 때 default 값을 정해둔 변수를 파라미터로 둔 것이다.

 

def calc_tax( price, operator = 1.1):
    supply_value = round(price / operator)
    vat = price - supply_value
    return supply_value, vat

result = calc_tax(110000)
print(result)
#(100000, 10000)

'''
operator - 디폴트 파라미터
 -> 디폴트 파라미터 자리에 함수 호출시 파라미터값을 전달해주면 그 값으로 변경
round() - 반올림 함수
'''

위의 코드에서

 

operator 는 디폴트 파라미터로

 

result = calc_tax(110000) 에서

 

파라미터를 하나만 주었지만 알아서 operator = 1.1로 받아서 함수를 실행하는것을 볼 수 있다.

 

위의 상황은 부가세가 10%가 고정이라는 전제하지만 혹시라도 부가세가 달리 계산되는 경우

 

해당 파라미터값을 직접 선언해주면 넘어간 값으로 계산된다.

 

예를들어 result = calc_tax(110000, 2.0)

 

을 해주면

 

result -> (55000, 55000) 으로 나올 것이다.

 

round( ... ) - 반올림 함수

 

23 디폴트, 함수, 파라미터.py

 

GitHub - Kim-myoung-jun/Python-Practice

Contribute to Kim-myoung-jun/Python-Practice development by creating an account on GitHub.

github.com

 

4. 가변길이 파라미터

가변길이 파라미터란

 

파라미터의 개수가 일정하지 않을때 쓰는 파라미터 선언 방식이다.

 

사용법은 *변수명 으로 앞에 *을 붙여서 사용한다.

 

def my_func(*a):
    n = 0
    for i in a:
        n += i
    return n;

a = my_func(1, 1, 1 ,1)
print(a)
# 4

b = my_func(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(b)
# 45

*a 로 가변길이 파라미터를 선언해주고

 

파라미터가 넘어온 값의 합을 리턴하는 함수이다.

 

함수 4개가 넘어가나, 9개가 넘어가나 일정하게 계산해서 넘겨준다.

 

my_func(1,1,1,1,) 이나 my_func(1,2,3,4,5,6,7,8,9)는 즉

 

튜플의 형태로 넘어간다고 할 수 있다.

 

그러므로 my_func(*a)에서 a는 튜플로 취급하여 똑같이 다뤄주면 된다.

 

아래는 파라미터의 개수와 넘어온 값들의 홀수의 합을 리턴하는 함수이다.

 

#가변길이 입력 파라미터 값들을 함수로 넘겨서 해당 파라미터의 개수와 홀수들의 합 구하는 함수
def odd_func(*a):
    sum = 0
    count = 0
    for i in a:
        count += 1
        if(i%2 != 0):
            sum += i
    
    return sum, count

c = odd_func(1,2,3,4,5,6,7,8,9)
print(c)
#(25, 9)

d = odd_func(1,2,3,4,5,6,7,8,9,10,11)
print(d)
#(36, 11)

 

24 함수, 함수 호출, 파라미터 개수.py

 

GitHub - Kim-myoung-jun/Python-Practice

Contribute to Kim-myoung-jun/Python-Practice development by creating an account on GitHub.

github.com

 

반응형

댓글