def addTest(x, y): #兩個參數
z = x+y
return z
x, y = 5, 10
print(“普通方法:”, addTest(x, y))
lst = [5, 10] #長度2, 兩個元素,
#長度同參數個數
#tp = 5,10 也可以
print(“使用*list:”, addTest(*lst))
dic = {“x”: 5, “y”: 10} #兩個key,兩個value
#dic = dict(x=5, y=10)
# 不同寫法一樣意思
print(“字典:”, dic)
“””
key: x,y必須跟addTest的參數一模一樣
不能換成p,q,不然會出現
TypeError: addTest() got an unexpected keyword argument ‘p’
“””
print(“使用**dict:”, addTest(**dic))
print(“使用*dict:”, addTest(*dic))
# 變成key的相加
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20220904174924_59.png)
#使用*list
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20220917175104_4.png)
#使用**dict實例:
import numpy as np
time1 = np.linspace(0,0.5,3)
#避免變數名稱取名為time,
#以免用到import time的time模組時撞名
dicIn = {
“time1”: time1,
“gain” : 32767,
“delay”: 1e-6
}
def exportDict(time1,gain,delay):
dic = {}
dic[“time”] = time1
dic[“gain”] = np.ones(time1.shape)*gain
dic[“delay”] = np.ones(time1.shape)*delay
#time1.shape=(3,),type=tuple
return dic
print(exportDict(**dicIn))
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221114135234_4.png)
解包與打包運算子:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221114111644_8.png)
**dict解包:
dict 的 Key 要與參數的名稱一樣,
而且不可多 不可少
一個*,兩種解讀
1. 打包第一個(不定長度)參數:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115135846_41.png)
“””其實不一定要第一個參數
惟定義在「*參數」前面的
參數皆不可省略,而定義在「*參數」後面的
參數只能為指名參數或 **kwargs”””
參數皆不可省略,而定義在「*參數」後面的
參數只能為指名參數或 **kwargs”””
2. 將長度同參數個數的list
解包到函式(*list, **dict):
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115133548_39.png)
*list: list長度必須跟參數個數相同
**dict:
dict 的 Key 要與參數的名稱一樣,
而且不可多 不可少
(跟list長度同參數個數一樣意思)
*dict: 解包dict的keys,一般不會這樣用
解包與打包運算子
(**最後一個參數,當作dict變數):
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115134318_2.png)
不定長度的選擇性參數:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115144410_25.png)
前面講的
*第一個參數,
也是不定長度參數
但是該不定長度參數是
必要輸入,非選擇性
輸入的參數視為tuple
**最後一個選擇性參數:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115161626_82.png)
或如下:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221115162700_37.png)
*args **kwargs
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214113725_11.png)
*args
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214113745_95.png)
*args
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214113942_61.png)
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214114052_34.png)
**kwargs
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214115229_70.png)
範例:
![Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2022/09/20221214115521_87.png)
近期留言