iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0

今天我們來研究 **kwargs

def func(**kwargs):
    print(kwargs)
func(x=100, y=200)
{'x': 100, 'y': 200}

**kwargs 是關鍵字引數的蒐集器,將它們蒐集在一個字典中。

我們可以把它跟 *args 一齊使用:

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1, 2, a=100, b=200)
(1, 2)
{'a': 100, 'b': 200}

然而下面的寫法會出錯:

def func(*, **kwargs):
    print(kwargs)
  Input In [6]
    def func(*, **kwargs):
             ^
SyntaxError: named arguments must follow bare *

單個星號表示接下來都是關鍵字引數,這跟 **kwargs 的意義重複,所以你也不需這麼寫。

def func(a, b, **kwargs):
    print(a)
    print(b)
    print(kwargs)
func(1, 2, x=100, y=200)
1
2
{'x': 100, 'y': 200}

**kwargs 的後面也不能再定義參數:

def func(a, b, **kwargs, c):
    pass
  Input In [9]
    def func(a, b, **kwargs, c):
                             ^
SyntaxError: invalid syntax

如果你想同時定義一個關鍵字參數和 **kwargs,需要先 exhausted 位置參數,然後定義你要的關鍵字參數和 **kwargs:

def func(*, d, **kwargs):
    print(d)
    print(kwargs)
func(d=1, x=100, y=200)
1
{'x': 100, 'y': 200}

好啦,明天我們會把這幾天學到的參數/引數知識綜合運用,我們明天見~

參考:Python 3: Deep Dive (Part 1 - Functional)


上一篇
Keyword Arguments
下一篇
*args, **kwargs 大集合
系列文
小青蛇變大蟒蛇——進階Python學起來!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言