티스토리 뷰
파이썬에서 함수의 파라메터 앞에 *또는 **이 붙어 있는 경우가 있습니다.
다른 언어에는 잘 없는 형태라서 파이썬을 처음 하시거나 익숙하지 않으신 분들은 이게 뭔가 싶을때가 있습니다.
* 파라메터
*는 쉽게 말하면 파라메터로 넘어오는 각 값들을 list형태로 받겠다는 뜻입니다.
def make_coffee(*matreials): 이렇게 *로 받아서
for item in matreials: 이렇게 이터레이터가 됩니다.
코드를 보겠습니다.
def make_coffee(*matreials):
mixed = ''
for item in matreials:
mixed += item
print(mixed)
make_coffee('water', 'espresso')
결과
waterespresso
스타벅스에서 커피를 주문해서 알바생이 커피를 뽑아주는 상황을 생각 해보겠습니다.
위 make_coffee는 *materials라는 한개의 파라메터만 가지고 있습니다만 make_coffee('water', 'espresso') 이렇게 값 두개를 넘겨서 호출합니다.
커피 제조하는게 재료들을 하나의 컵에 섞으면 되는 것 아니겠습니까? 그래서 아메리카노는 물과 에스프레소를 섞구요
캐러맬 마끼야또는 아메리카노에 캐러멜을 섞는 레시피라고 했을때 '캐러멜'까지 추가 해주는 것입니다.
make_coffee('water', 'espresso', '캐러멜')
위와 같이 함수를 별도로 수정하지 않고 값을 3개를 넘기는 것도 가능합니다.
단순히 넣고 섞는 기능으로도 가능하게 만든다면 파이썬에서는 변수 하나를 선언한 후 *을 붙이고 리스트 처럼 사용하는 것이 가능합니다.
plus()함수인데 값이 몇개가 들어올지 모르는 경우
plus(a, b) 이렇게 만들면 값 2개밖에 못 더하지만 plus(*numbers) 이렇게 만들면 값이 몇개가 들어오는지를 몰라도 다 더할 수 있습니다.
def plus_all(*numbers):
sum = 0
for n in numbers:
sum += n
return sum
print(plus_all(1, 2))
print(plus_all(1, 2, 3))
결과
3
6
**파라메터
**kwargs 이런 이름과 형태를 많이 보셨을 것입니다. key word arguments 를 줄인게 kwargs가 아닌가 싶습니다.
이 경우는 함수를 호출 할 때 꼭 파라메터의 이름을 써주는 경우 **kwargs로 받을 수 있습니다.
def fn(**kwargs):
print(kwargs)
fn(year=2, age=35)
결과
{'year': 2, 'age': 35}
def fn2(**kwargs):
print(kwargs['year'], kwargs['age'])
fn2(year=2, age=35)
결과
2 35
end.
'Language > Python' 카테고리의 다른 글
Serverless Python에서 Environment Variable이용하기 (0) | 2022.04.04 |
---|---|
Jupyter Notebook root 디렉토리(Directory) (0) | 2021.06.21 |
Python venv만들기, package install and conda (1) | 2021.01.18 |
Python Flask Pycharm Community Edition에서 개발환경 구축하기 (0) | 2020.10.30 |
How to query Elastic Search in Python (0) | 2020.10.27 |
- Total
- Today
- Yesterday
- 이직
- vim
- 도커티슈박스
- 도커각티슈케이스
- Linux
- docker container case
- docker container tissue box
- docker container whale
- 2017 티스토리 결산
- 도커각티슈박스
- 싱가폴
- shellscript
- Sh
- 도커컨테이너
- 도커티슈케이스
- docker container
- docker container tissue
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |