반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

CDW (Coding Discussion World)

python 기초 - 함수 (*args, **kwargs) 본문

Python/Study

python 기초 - 함수 (*args, **kwargs)

pymin 2022. 11. 30. 23:15
반응형

 

함수란 다들 알다시피 함수를 만들고 원하는 값을 넣으면 함수 안의 내용이 수행된다.

함수에서 자주 사용하는 기능을 알아보자.

def sum_sum(a,b,c):
    print(a+b+c)

sum_sum(1,2,3)
sum_sum(3,4,5)
6
12

 

1. 함수로 무언가 계산을 하거나 계산하는 값을 return 할 수 있다.

def sum_sum(a,b,c):
    return (a+b+c)

result_1 = sum_sum(1,2,3)
print(result_1)

result_2 = sum_sum(3,4,5)
print(result_2)
6
12

 

2. 함수의 기본값을 설정할 수 있다.

기본값을 설정하면 함수에 해당 내용을 입력하지 않아도 에러가 나지 않고 기본값이 적용된다.

def sum_sum(a,b=2,c=3):
    return (a+b+c)

result_1 = sum_sum(1)
print(result_1)

result_2 = sum_sum(1,2)
print(result_2)
6
6

 

3. 함수에 인자를 넣을때 인자를 지정하지 않으면 순서대로 적용되지만 어떤 인자인지 입력하면 순서는 상관이 없다.

def sum_sum(a,b,c):
    return (a+b+c)

result_1 = sum_sum(b=2,c=3,a=1)
print(result_1)

result_2 = sum_sum(1,2,c=3)
print(result_2)
6
6

 

4. *args

함수의 인자앞에 *을 붙이면 가변인자가 된다. 가변인자가 되면 아래처럼 리스트로 담아지고 개수의 제한이 없어진다. (꼭 *args라고 표시할 필요는 없다)

def sum_sum(a,b,*c):
    print(c)

sum_sum(1,2,3,4,5)
sum_sum(1,2,3,4,5,6,7)
(3, 4, 5)
(3, 4, 5, 6, 7)

 

5. *args 응용

가변인자는 리스트로 담기기 때문에 for 등을 이용해 응용이 가능하다.

def sum_sum(a,b,*c):
    for i in c:
        print(i)

sum_sum(1,2,3,4,5)
3
4
5

 

6. **kwargs

kwargs는 앞에 **를 붙이면 되고 dictionary가 된다.

def sum_sum(a,b,**c):
    print(c)

sum_sum(1,2,dic1="dic_result1", dic2="dic_result2")
{'dic1': 'dic_result1', 'dic2': 'dic_result2'}

 

7. **kwargs 응용

그럼 **kwargs는 어떻게 응용이 가능할까? dictionary이므로 items()를 활용하여 key와 value를 원하는대로 control 할 수 있다.

def sum_sum(a,b,**c):
    for i, j in c.items():
        print(i,"와",j)

sum_sum(1,2,dic1="dic_result1", dic2="dic_result2")
dic1 와 dic_result1
dic2 와 dic_result2

 

 

args 관련해서 한가지 더 추가하고자 한다. tuple의 값들을 변수들에 담을때 *가 있으면 나머지 값들은 모두 해당 변수에 담긴다. 아래 출력 결과를 잘 확인해보자.

scores = (1, 2, 3, 4, 5, 6)
low, *others, high = scores
print(others)

scores = (1, 2, 3, 4, 5, 6)
llow, low, *others, high = scores
print(others)
[2, 3, 4, 5]
[3, 4, 5]

 

 

끝!

 

반응형