<TIL> Python - *args ์™€ **kwargs

Sinjae Leeยท2021๋…„ 6์›” 10์ผ
0
def solution(a, b, *args, **kwargs):
	print(a, b, args, kargs)
    
solution(1, 3, 6, 7, 8, age=29, name="jay")

๐Ÿ˜ณ๐Ÿ˜ณ *args, **kwargs ๋ผ๋‹ˆ..?

์‹ฌ์ง€์–ด ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

1,3, (6, 7, 8), {'age' : 29, 'name' : 'jay'}

์ด๋ ‡๊ฒŒ ํŠœํ”Œ๊ณผ ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ํ˜ผ์žฌ๋˜์–ด์„œ ์ถœ๋ ฅ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด *args ์™€ **kwargs ๊ฐ€ ๋ญ˜๊นŒ

variable length positional arguments - *args

  • *args๋Š” *arguments์˜ ์ค„์ž„๋ง์ด๋‹ค.

  • positional argments ์ฆ‰ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ ์ธ์ž ๋ฐฉ์‹์ด ์œ„์น˜ ์ธ์ž ๋ฐฉ์‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” argments ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ด๋œ๋‹ค.

  • ๊ตณ์ด *args ๋ผ๊ณ  ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ  *friends ์ด์ฒ˜๋Ÿผ ์ž‘์„ฑํ•ด๋„ ์ž‘๋™๋œ๋‹ค.

  • *args ๋ผ๋Š” ์ด ์ง€์‹œ์–ด๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธ์ž๋ฅผ ํ•จ์ˆ˜๋กœ ๋ฐ›๊ณ ์ž ํ•  ๋•Œ ์“ฐ์ด๊ณ  ํŠœํ”Œํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

variable length keyword arguments - **kwargs

  • **kwargs๋Š” **keyword arguments ์˜ ์ค„์ž„๋ง์ด๋‹ค.

  • keyword arguments๋Š” keyword๊ฐ€ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ˆ˜์˜ arguments ๋ฅผ ๋ฐ›๋Š”๋‹ค.

  • ํ‚ค์›Œ๋“œ='' ์œผ๋กœ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ๊ทธ๊ฒƒ์„ key ์™€ value ๊ฐ’์˜ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ์œ„์˜

def solution(a, b, *args, **kwargs):
	print(a, b, args, kargs)
    
solution(1, 3, 6, 7, 8, age=29, name="jay")

์ฝ”๋“œ์—์„œ a,b ์™€๊ฐ™์€ ์ธ์ž๋“ค์€ regular positional arguments ์ด๋‹ค.

์ด ์—ฌ๋Ÿฌ ์ธ์ž๋“ค์ด ๋†“์—ฌ์ง€๋Š” ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ด ์œ„์น˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์•„๋ž˜ ์˜ˆ์ œ๋“ค์„ ์ˆ˜์ •ํ•ด๋ณด์ž

Q1.

def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)


func_param_with_var_args("์ •์šฐ์„ฑ", "01012341234", "seoul", 20)

A1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด variable length positional arguments(*args) ๊ฐ€ regular positional arguments(name, age) ๋’ค๋กœ ์™€์•ผํ•œ๋‹ค.

def func_param_with_var_args(name, age, *args):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)


func_param_with_var_args("์ •์šฐ์„ฑ", "01012341234", "seoul", 20)

Q2.

def func_param_with_kwargs(name, age, **kwargs, address=0):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)




func_param_with_kwargs("์ •์šฐ์„ฑ", "20", mobile="01012341234", address="seoul")

A2. variable length keyword arguments์ธ **kwargs ๊ฐ€ name, age, address=0 ๋ณด๋‹ค ๋’ค์— ์žˆ์–ด์•ผ ํ•˜๊ณ , default ๊ฐ’์ด ๋ถ€์—ฌ๋œ address=0 ์ด name, age ์ธ์ž๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด ๋œ๋‹ค.

def func_param_with_kwargs(name, age, address=0, **kwargs):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)


func_param_with_kwargs("์ •์šฐ์„ฑ", "20", mobile="01012341234", address="seoul")

Q3.

def mixed_params(name="์•„์ด์œ ", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)



mixed_params(20, "์ •์šฐ์„ฑ", "01012341234", "male" ,mobile="01012341234", address="seoul")

A3. ์ด ๋ฌธ์ œ์—์„œ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์€ *args, **kwargs ๊ฐ€ ๋งจ๋’ค์— ์œ„์น˜ํ•˜๊ณ  regular positional args ์ธ age, address ๊ทธ ๋’ค์—๋Š” default ๊ฐ’์ด ๋ถ€์—ฌ๋œ name='์•„์ด์œ ๋ฅผ ๋†“์•„์คฌ๋‹ค.' ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์—์„œ parameter address="seoul"์—์„œ key ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  'seoul' ๋งŒ ์ž…๋ ฅํ•ด์„œ ์œ„์น˜์— ๋งž๊ฒŒ ์ด๋™์‹œ์ผœ์ฃผ์—ˆ๋‹ค

def mixed_params(age, address, name="์•„์ด์œ ", *args, **kwargs):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

mixed_params(20, "seoul", "์ •์šฐ์„ฑ", "01012341234", "male" ,mobile="01012341234")

๋!

profile
Back-end developer

0๊ฐœ์˜ ๋Œ“๊ธ€