๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ | Python/ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•

*args ์™€ **kwargs

by KASSID 2021. 10. 15.

๋ชฉ์ฐจ

    728x90

    *args

    *args๋Š” *arguments์˜ ์•ฝ์ž์ด๋‹ค!

    ์ž…๋ ฅ๊ฐ’์˜ ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์„ ๋•Œ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์ž๋ฅผ ํ•จ์ˆ˜๋กœ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

    def ํ•จ์ˆ˜๋ช…(*๋งค๊ฐœ๋ณ€์ˆ˜):
        ์‹คํ–‰๋ฌธ์žฅ

    ์ด์ „์—๋„ ํ•œ ๋ฒˆ ๋‹ค๋ค˜์—ˆ์ง€๋งŒ *args์˜ ํ˜•ํƒœ๋Š” ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์œผ๋ฉด ํŠœํ”Œ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

     

    def sum(*num):
        result = 0
        for i in num:
            result += i
        return result
    
    a = sum(1,2,3,4)
    print(a)
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    10

    ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์ž…๋ ฅ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋„ฃ์–ด์ฃผ์–ด๋„ ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    def sum(*num):
        result = 0
        for i in num:
            result += i
        print(type(num), num)
        return result
    
    a = sum(1,2,3,4)
    print(a)
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    <class 'tuple'> (1, 2, 3, 4)
    10

    ํ•จ์ˆ˜์˜ ํƒ€์ž…์„ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ํŠœํ”Œ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!

     

    ์ฃผ์˜

    *args๋Š” ์ผ๋ฐ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ๋‹ค.

    def profile(name, *args):
        print(f'์ด๋ฆ„ : {name}', end = ' | ')
        print('์ทจ๋ฏธ : ', end = '')
        for i in args:
            print(i,end=' ')
    
    profile('์†ํฅ๋ฏผ', '๋‹ฌ๋ฆฌ๊ธฐ', '์ถ•๊ตฌ', '๊ฒŒ์ž„')
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    ์ด๋ฆ„ : ์†ํฅ๋ฏผ | ์ทจ๋ฏธ : ๋‹ฌ๋ฆฌ๊ธฐ ์ถ•๊ตฌ ๊ฒŒ์ž„

    ์ž ์ด ์˜ˆ์‹œ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด?

    def profile(*args, name):
        print(f'์ด๋ฆ„ : {name}', end = ' | ')
        print('์ทจ๋ฏธ : ', end = '')
        for i in args:
            print(i,end=' ')
    profile('์†ํฅ๋ฏผ', '๋‹ฌ๋ฆฌ๊ธฐ', '์ถ•๊ตฌ', '๊ฒŒ์ž„')
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    TypeError: profile() missing 1 required keyword-only argument: 'name'

    ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

    ์ฆ‰, *args๋ฅผ ์ผ๋ฐ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋’ค์— ์จ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

     

     

    **kwargs

    **kwargs๋Š” **keywordarguments์ด ์•ฝ์ž์ด๋‹ค.

    (์ฐธ๊ณ ๋กœ args์™€ kwargs๋Š” ๊ด€๋ก€๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด๋“ค์ด๋‹ค!)

    def ํ•จ์ˆ˜๋ช…(**๋งค๊ฐœ๋ณ€์ˆ˜):
        ์‹คํ–‰๋ฌธ์žฅ

    ํ‚ค์›Œ๋“œ = ํŠน์ • ๊ฐ’ ํ˜•ํƒœ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด

    {ํ‚ค์›Œ๋“œ : 'ํŠน์ •๊ฐ’'} ํ˜•ํƒœ๋กœ ๋‚ด๋ถ€์— ์ „๋‹ฌ์ด ๋œ๋‹ค.

    def func(**kwargs):
        print(kwargs)
    
    func(a=1)
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    {'a' : 1}

     

    def profile(**kwargs):
        for key, value in kwargs.items():
            print(f"{key} : {value}")
    
    profile(์ด๋ฆ„ = '์†ํฅ๋ฏผ')
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    ์ด๋ฆ„ : ์†ํฅ๋ฏผ

    ์œ„์˜ ์˜ˆ์ฒ˜๋Ÿผ ํ™œ์šฉ์„ ํ•  ์ˆ˜์žˆ๋‹ค.

    def profile(**kwargs):
        for key, value in kwargs.items():
            print(f"{key} : {value}")
            if '์†ํฅ๋ฏผ' in kwargs.values():
                print("Hi, sonny!")
    profile(์ด๋ฆ„ = '์†ํฅ๋ฏผ')
    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก
    ์ด๋ฆ„ : ์†ํฅ๋ฏผ
    Hi, sonny!

    ์ด๋Ÿฐ ์‹์œผ๋กœ์˜ ํ™œ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

     

    ์ฃผ์˜

    ์ด๋ฒˆ์—๋„ ์—ญ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ๋Š”๋ฐ ๊ฐ™์€ ์ด์œ ๋กœ

    ์ˆœ์„œ๋ฅผ ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค.

     

    *args์™€ **kwargs๋Š” ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

    def storeinfo(store,*products,**prices):
        print(f'----({store})----')
        print("|ํŒ๋งค๋ชฉ๋ก|")
        for saleList in products:
            print(saleList, end=' ')
        print("\n|ํ•œ ๋ด‰์ง€๋‹น ๊ฐ€๊ฒฉ|")
        for product, price in prices.items():
            print(f"{product} >> {price}์›")
    
    p1 = '๊ฐ€์ง€'; p2 = '์ƒ์ถ”'; p3 = '๋ฌดํ™”๊ณผ'
    storeinfo('์‚ฐ๋“ค๊ฐ€๊ฒŒ', p1, p2, p3, ๊ฐ€์ง€=1450, ์ƒ์ถ”=1980, ๋ฌดํ™”๊ณผ=9000)

    ์ด ์˜ˆ์‹œ ๋˜ํ•œ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

     

    ์ •๋ฆฌํ•˜๋ฉด,

    ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

    ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆœ์„œ : (๋ณ€์ˆ˜ -> *๋ณ€์ˆ˜ -> **๋ณ€์ˆ˜)

    *๋ณ€์ˆ˜ : ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์ธ์ˆ˜๋กœ ๋“ค์–ด์˜ค๋ฉด ํŠœํ”Œ๋กœ ์ฒ˜๋ฆฌ

    **๋ณ€์ˆ˜ : ํ‚ค์›Œ๋“œ=OO ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๊ฐ๊ฐ์„ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์ฒ˜๋ฆฌ

     

    ๋Œ“๊ธ€