Python-parameter.md


Python ํ•จ์ˆ˜ ์„ ์–ธ๋ถ€์— ๋ณด๋ฉด ๊ฐ€๋” args, kwargs๋ฅผ ๋ณผ์ˆ˜ ์žˆ๋‹ค.

  • args : ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ˆ˜์˜ (์ผ๋ฐ˜)ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค

  • kwargs : ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ˆ˜์˜ (ํ‚ค์›Œ๋“œ)ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค ? ์ด๊ฒŒ ๋ฌด์Šจ ์†Œ๋ฆด๊นŒ ์ฐจ๊ทผ์ฐจ๊ทผ ์ดํ•ดํ•ด๋ณด์ž

Python์˜ Parameter

  • ์ผ๋ฐ˜ ํŒŒ๋ผ๋ฏธํ„ฐ

def myFunc(a, b):
    return a + b
myFunc(1, 2)

์œ„์™€ ๊ฐ™์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ

  • ํ‚ค์›Œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ

def myFunc(a=0, b=1):
    return a + b
myFunc(1, 2)

์œ„์™€ ๊ฐ™์ด ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ default๊ฐ’์„ ์ง€์ •ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ›์œผ๋ฉด ๋˜์ง€๋งŒ,

def myFunc(a=0, b=3, c=1):
    return a + b + c

์œ„์˜ ๊ฒฝ์šฐ์—์„œ a,b๋Š” ๊ธฐ๋ณธ ์ธ์ž ๊ฐ’ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  c์—๋งŒ ๋‹ค๋ฅธ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ

myFunc(c=4)

์ด๋ ‡๊ฒŒ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ๋ณ€์ˆ˜๋ช…(ํ‚ค์›Œ๋“œ)๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ํ‚ค์›Œ๋“œ ์ธ์ž๋Š” ์ผ๋ฐ˜ ์ธ์ž ๋’ค์— ์™€์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ํ˜ธ์ถœํ•  ๋•Œ์—๋„ ์ผ๋ฐ˜ ์ธ์ž ๋’ค์— ์™€์•ผํ•œ๋‹ค.

def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    ...
# ๊ฐ€๋Šฅ
parrot(1000)
parrot(voltage=1000)
parrot(voltage=1000000, action='VOOOOOM')

# ๋ถˆ๊ฐ€๋Šฅ
parrot()                     # ์ผ๋ฐ˜ ์ธ์ž๊ฐ’ ์—†์Œ
parrot(voltage=5.0, 'dead')  #ํ‚ค์›Œ๋“œ ์ธ์ž ๋’ค์— ์ผ๋ฐ˜ ์ธ์ž๊ฐ’์„ ์ฃผ์ง€ ๋ชปํ•จ
parrot(110, voltage=220)     # ํ•œ ์ธ์ž์— ๋‘ ๊ฐ’์„ ์ฃผ์ง€ ๋ชปํ•จ
parrot(actor='John Cleese')  # actor๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์Œ

์ด์ œ args์™€ kwargs๋ฅผ ๋ณด์ž

**kwargs๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ํ‚ค์›Œ๋“œ ์ธ์ž๋“ค ์ค‘์—์„œ ์ผ๋ฐ˜ ์ธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๋„˜๊ฒจ ๋ฐ›๋Š”๋‹ค. *args๋Š” ์ผ๋ฐ˜ ์ธ์ž๊ฐ’์„ ๋ฐ›์œผ๋ฏ€๋กœ **kwargs์™€ ํ˜ผ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ **kwargs๊ฐ€ ๋’ค์— ์™€์•ผ ํ•œ๋‹ค.

def myFunc(a, *args, **kwargs):
    print('a=', a)
    print('args=', args)
    print('kwargs=', kwargs)

>>> myFunc(11)
a= 11
args= ()
kwargs= {}
>>> myFunc(11,22,33) #์ผ๋ฐ˜ ์ธ์ž ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— 22, 33์€ args์— ๋“ค์–ด๊ฐ„๋‹ค
a= 11
args= (22, 33) #type : <class 'tuple'>
kwargs= {}
>>> myFunc(11,22,33,b=44,c=55) # ํ‚ค์›Œ๋“œ ์ธ์ž b, c๋Š” kwargs์— ๋“ค์–ด๊ฐ„๋‹ค.
a= 11
args= (22, 33)
kwargs= {'c': 55, 'b': 44} # type : <class 'dict'>

Last updated