일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 유튜브
- 구글애널리틱스가이드
- 페이스북광고
- GA설치
- 구글ads
- 책추천
- 파이썬정규표현식
- 구글애널리틱스공부
- 파이썬프로그래밍
- 유튜브광고
- GA4
- GA강의
- 파이썬내장함수
- 파킹통장
- 구글애널리틱스
- GA가이드
- 국민내일배움카드
- 신용카드추천
- 파이썬
- GA
- 구글애널리틱스4
- GA공부
- 파이썬문자열
- 메이크샵
- 구글애널리틱스강의
- 마케팅
- 파킹통장추천
- 파이썬공부
- 카페24
- 파이썬함수
- Today
- Total
정리왕
파이썬 함수 4 (매개변수 지정하여 호출하기) 본문
# 매개변수 지정하여 호출하기
함수를 호툴할 때 매개변수를 지정할 수도 있다.
다음 예를 보자.
>>> def add (a,b):
return a+b
앞에서 알아본 add 함수이다. 이 함수를 다음과 같이 매개변수를 지정하여 사용할 수 있다.
-> a에 3, b에 7을 전달하기
>>> result = add(a=3, b=7)
>>> print(result)
10
매개변수를 지정하면 다음과 같이 순서에 상관없이 사용할 수 있다는 장점이 있다.
>>> result = add(b=5, a=3)
>>> print(result)
8
# 입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
입력값이 여러 개일 때 그 입력값을 모두 더해 주는 함수를 생각해 보자.
하지만 몇 개가 입력될지 모를 때는 어떻게 해야 할까? 아마도 난감할 것이다.
파이썬은 이런 문제를 해결하기 위해 아래와 같은 방법을 제공한다. 일반적으로 볼 수 있는 함수 형태에서 괄호 안의 매개변수 부분이 *매개변수로 바뀌었다.
def 함수이름 (*매개변수): 수행할 문장 ... |
여러 개의 입력값을 받는 함수 만들기
다음 예를 통해 여러 개의 입력값을 모두 더하는 함수를 직접 만들어 보자. 예를 들어 add_many(1, 2)이면 3을, add_many(1, 2, 3)이면 6을, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이면 55를 돌러주는 함수를 만들어 보자.
>>> def add_many(*args):
result = 0
for i in args:
result = result + i
return result
>>>
위에서 만든 add_many 함수는 입력값이 몇 개이든 상관이 없다. *args처럼 매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 주기 때문이다. 만약 add_many(1, 2, 3)처럼 이 함수를 쓰면 args는 (1, 2, 3)이 되고, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)처럼 쓰면 args는 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이 된다. 여기에서 *args는 임의로 정한 변수 이름이다. *pey, *python처럼 아무 이름이나 써도 된다.
※ args는 매개변수를 뜻하는 영어 단어 arguments의 약자이며 관례적으로 자주 사용한다.
실제로 이 함수를 직접 실행해 보자.
>>> result = add_many(1, 2, 3)
>>> print(result)
6
>>> result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
>>> print(result)
55
add_many(1, 2, 3)으로 함수를 호출하면 6을 돌려주고, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)을 대입하면 55를 돌려준다.
여러 개의 입력을 처리할 때 def add_many("args)처럼 매개변수로 *args만 사용할 수 있는 것은 아니다. 다음 예를 보자.
>>> def add_mul(choice, *args):
if choice == "add":
result = 0
for i in args:
result = result + i
elif choice == "mul":
result = 1
for i in args:
result = result * i
return result
>>>
add_mul 함수는 여러 개의 입력값을 의미하는 "args 매개변수 앞에 choice 매개변수가 추가되어 있다.
이 함수는 다음과 같이 사용할 수 있다.
>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul',1,2,3,4,5)
>>> print(result)
120
매개변수 choice에 'add'가 입력된 경우 *args에 입력되는 모든 값을 더해서 15를 돌려주고, 'mul'이 입력된 경우 *args에 입력되는 모든 값을 곱해서 120을 돌려준다.
* 키워드 파라미터
이번에는 키워드 파라미터에 대해 알아보자. 키워드 파라미터를 사용할 때는 매개변수 앞에 별 두개(**)를 붙인다. 역시 이것도 예제로 알아보자. 먼저 다음과 같은 함수를 작성한다.
>>> def print_kwargs(**kwargs):
print(kwargs)
>>>
print_kwarge 함수는 매개변수 kwargs를 출력하는 함수이다. 이제 이 함수를 다음과 같이 사용해보자.
>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo', age=3)
{'name': 'foo', 'age': 3}
입력값 a=1 또는 name='foo', age=3이 모두 딕셔너리로 만들어져서 출력된다는 것을 확인할 수 있다.
즉 **kwarge처럼 매개변수 이름 앞에 **을 붙이면 매개변수 kwarge처럼 매개변수 이름 앞에 **을 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 key=value 형태의 결과값이 그 딕셔너리에 저장된다.
※ 여기에서 kwargs는 keyword arguments의 약자이며 args와 마찬가지로 관례적으로 사용한다.
'6.개발 > 파이썬 공부하기' 카테고리의 다른 글
파이썬 함수 6 (매개변수에 초기값 미리 설정하기) (0) | 2020.11.29 |
---|---|
파이썬 함수 5 (함수의 결과값은 언제나 하나이다) (0) | 2020.11.29 |
파이썬 함수 3 (함수의 4가지 종류) (0) | 2020.11.29 |
파이썬 함수2 (매개변수와 인수) (0) | 2020.11.29 |
파이썬 함수 1 (파이썬 함수의 구조) (0) | 2020.11.29 |