๐ [Python] *args, **kwargs?
*, ** ๊ฐ ๋ญ๊น ์ง์ง?
*
๋ C์์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ๋ดค๋ค.
ํ์ด์ฌ์์๋ *
์ด ๋ณด์ด๋ ์ด์ง ๋นํฉํ์ง๋ง, ์ด๊ฒ ํฌ์ธํฐ์ฒ๋ผ ์ฃผ์๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ฌํ๋ค.
๋จผ์ *๊ฐ 1๊ฐ ์ฐ์ด๋ *args
์ ๋ํด์ ์์๋ณด์.
*args?
*args
๋ *arguments์ ์ค์๋ง์ด๋ค.
์ฆ, *args
๊ฐ ์๋ *doc
์ด๋ฐ ์์ผ๋ก ๋ค๋ฅธ ์ด๋ฆ์ด ์๋ ๋๋ค.
์ด *args
๋ ์ฌ๋ฌ ๊ฐ์ ์ธ์๋ฅผ ํจ์
๋ก ๋ฐ์ ๋ ์ฌ์ฉํ๋ค!
์์
def peoples(*args):
for name in args:
print(name)
print(type(args))
people_names = ["์งฑ๊ตฌ", "๋งน๊ตฌ", "์ฒ ์", "ํ์ด", "์ ๋ฆฌ"]
peoples(people_names)
์ด ์ฝ๋๋ฅผ ์คํํด๋ณด๋ฉด ์๋์ ๊ฐ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
['์งฑ๊ตฌ', '๋งน๊ตฌ', '์ฒ ์', 'ํ์ด', '์ ๋ฆฌ']
<class 'tuple'>
์ด์ฒ๋ผ ์ธ์๋ก ๋ค์ด๊ฐ ๊ฐ(args)
์ ํํ
๋ก ์ธ์๋์ด ์ฒ๋ฆฌ๋๋ ๊ฒ์ ์ ์ ์๋ค!
์ฆ, ์ฌ๋ฌ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๊ธฐ ์ํด์ *args
์ ํํ๋ก ํจ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋๊ฑฐ์๋ค.
**kwargs?
kwargs
๋ keyword argument์ ์ค์๋ง๋ก, ํค์๋๋ฅผ ์ ๊ณตํ๋ค.
์์
def introduce(**kwargs):
for key, value in kwargs.items():
print(f"{key} : {value}")
introduce(name="junho")
์ด๋ ๊ฒ ์ด๋ฒ์๋ ์ธ์๋ฅผ **kwargs
๋ก ๋ฐ์๋ค.
์ด๊ฑธ ์ถ๋ ฅํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
name : junho
์ฆ, **kwargs
๋ {keyword : value}์ ํํ๋ก ํจ์๋ฅผ ํธ์ถํ๋ ์ญํ ์ด๊ณ , dictionary
ํํ๋ก ํจ์ ๋ด๋ถ์ ์ ๋ฌ๋๋ค.
*args์ **kwargs์๋ ์์๊ฐ ์๋ค!
python ๋ด๋ถ์์๋ *args
์ **kwargs
๋ฅผ ์
๋ ฅํ๋ ๋ฐ์๋ ์์๊ฐ ์๋ค!
val > *args > **kwargs ์์๋ค! (์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์๋ก ์ฐ์ ์์ ๋ฆ์)
์์
def func1(name, *args, **kwargs):
pass
def func2(**kwargs, *args):
pass
def func3(*args, name):
pass
func1
: OKfunc2
: NOfunc3
: NO
๋๊ธ๋จ๊ธฐ๊ธฐ