๐Ÿ—‚๏ธ

4.7.2. args, kwargs


1. *args

args(arguments)๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ธ์ž๋“ค์„ ๊ฐ€๋ณ€์ธ์ˆ˜๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’๋“ค์€ ๋ชจ๋‘ tuple๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
์ž…๋ ฅ
def print_args(*args): print(args) for x in args: print(x) print_args(100, True, 'leehojun')
ย 
์ถœ๋ ฅ
(100, True, 'leehojun') 100 True leehojun

2. **kwargs

**kwargs๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๊ฐ€๋ณ€์ธ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. *arg์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ ์ •์ธ์ˆ˜์™€ ๊ฐ€๋ณ€์ธ์ˆ˜ ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
args(arguments)๋Š” ํŠœํ”Œ ํ˜•์‹์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋ฐ˜๋ฉด kwargs(keyworded arguments)๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
์ž…๋ ฅ
def print_kwargs(a, **kwargs): print(a) print(kwargs) for i in kwargs: print(i) print_kwargs(100, name='leehojun', age='10')
ย 
์ถœ๋ ฅ
100 {'name': 'leehojun', 'age': '10'} name age

3. *args์™€ **kwargs ์‘์šฉ

๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์•ž์—๋Š” args์˜ ํ˜•์‹์œผ๋กœ, ๋’ค์—๋Š” kwargsํ˜•์‹์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ˜ผํ•ฉํ•˜๋ฉด ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
์ž…๋ ฅ
def print_args_kwargs(*args, **kwargs): print('args:', args) for x in args: print(x) print('kwargs:', kwargs) for x in kwargs: print(x) print(kwargs[x]) print_args_kwargs(100, True, 'leehojun') print('--------') print_args_kwargs(score=100, name='leehojun', age='10') print('--------') print_args_kwargs(100, True, 'leehojun', score=100, name='leehojun', age='10') #print('--------') # print_args_kwargs(100, score=100, True, name='leehojun', 'leehojun', age='10')
ย 
์ถœ๋ ฅ
args: (100, True, 'leehojun') 100 True leehojun kwargs: {} -------- args: () kwargs: {'score': 100, 'name': 'leehojun', 'age': '10'} score 100 name leehojun age 10 -------- args: (100, True, 'leehojun') 100 True leehojun kwargs: {'score': 100, 'name': 'leehojun', 'age': '10'} score 100 name leehojun age 10
ย 
์•„๋ž˜ ์˜ˆ์ œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ์„ ์–ธํ•ด์„œ ๋ณด๋‚ด๋Š” ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ์‹ค์Šตํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
์ž…๋ ฅ
def print_args_kwargs(*args, **kwargs): print('args:', args) for x in args: print(x) print('kwargs:', kwargs) for x in kwargs: print(x) print(kwargs[x]) inputlist=[100, True, 'leehojun'] inputdic={'score':100, 'name':'leehojun', 'age':'10'} print_args_kwargs(*inputlist) print('--------') print_args_kwargs(**inputdic) print('--------') print_args_kwargs(*inputlist, **inputdic)
ย 
์ถœ๋ ฅ
args: (100, True, 'leehojun') 100 True leehojun kwargs: {} -------- args: () kwargs: {'score': 100, 'name': 'leehojun', 'age': '10'} score 100 name leehojun age 10 -------- args: (100, True, 'leehojun') 100 True leehojun kwargs: {'score': 100, 'name': 'leehojun', 'age': '10'} score 100 name leehojun age 10

4. ๊ธฐํƒ€ *์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•

๋„ฃ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์œผ๋ฉด ํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ž์„œ ์‚ดํŽด๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ์ดˆ๊ณผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€์ˆ˜ ์•ž์— *๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ดˆ๊ณผ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž…๋ ฅ
one, two, *three = 1,2,3,4,5 print(one, two, three)
ย 
์ถœ๋ ฅ
1 2 [3, 4, 5]
ย