** 在python裡面表示冪運算傳遞實參和定義形參(所謂實參就是呼叫函式時傳入的引數,形參則是定義函式是定義的引數)的時候,你還可以使用兩個特殊的語法:``*`` ** 。呼叫函式時使用* **test(*args)* 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個程式碼,如果 args 等於 (1,2,3) ,那麼這個程式碼就等價於 test(1, 2, 3) 。test(**kwargs)** 的作用則是把字典 kwargs 變成關鍵字引數傳遞。比如上面這個程式碼,如果 kwargs 等於 {"a":1,"b":2,"c":3} ,那這個程式碼就等價於 test(a=1,b=2,c=3) 。定義函式引數時使用* **def test(*args):...定義函式引數時 * 的含義又要有所不同,在這裡 *args 表示把傳進來的位置引數都裝在元組 args 裡面。比如說上面這個函式,呼叫 test(1, 2, 3) 的話, args 的值就是 (1, 2, 3) 。:def test(**kwargs):...類似的, ** 就是針對關鍵字引數和字典的了。 呼叫 test(a=1,b=2,c=3) 的話, kwargs 的值就是 {"a":1,"b":2,"c":3} 了。普通的引數定義和傳遞方式和 * 們都可以和平共處,不過顯然 * 必須放在所有位置引數的最後,而 ** 則必須放在所有關鍵字引數的最後,否則就要產生歧義了
** 在python裡面表示冪運算傳遞實參和定義形參(所謂實參就是呼叫函式時傳入的引數,形參則是定義函式是定義的引數)的時候,你還可以使用兩個特殊的語法:``*`` ** 。呼叫函式時使用* **test(*args)* 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個程式碼,如果 args 等於 (1,2,3) ,那麼這個程式碼就等價於 test(1, 2, 3) 。test(**kwargs)** 的作用則是把字典 kwargs 變成關鍵字引數傳遞。比如上面這個程式碼,如果 kwargs 等於 {"a":1,"b":2,"c":3} ,那這個程式碼就等價於 test(a=1,b=2,c=3) 。定義函式引數時使用* **def test(*args):...定義函式引數時 * 的含義又要有所不同,在這裡 *args 表示把傳進來的位置引數都裝在元組 args 裡面。比如說上面這個函式,呼叫 test(1, 2, 3) 的話, args 的值就是 (1, 2, 3) 。:def test(**kwargs):...類似的, ** 就是針對關鍵字引數和字典的了。 呼叫 test(a=1,b=2,c=3) 的話, kwargs 的值就是 {"a":1,"b":2,"c":3} 了。普通的引數定義和傳遞方式和 * 們都可以和平共處,不過顯然 * 必須放在所有位置引數的最後,而 ** 則必須放在所有關鍵字引數的最後,否則就要產生歧義了