Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子

加入好友
加入社群
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王

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要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
 
 
#使用*list
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
 
#使用**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要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
 
解包與打包運算子:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
**dict解包:
dict 的 Key 要與參數的名稱一樣,
而且不可多 不可少
 
一個*,兩種解讀
1. 打包第一個(不定長度)參數:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
“””其實不一定要第一個參數
惟定義在「*參數」前面的
參數皆不可省略,而定義在「*參數」後面的
參數只能為指名參數或 **kwargs”””
 
2. 將長度同參數個數的list
解包到函式(*list, **dict):
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
*list: list長度必須跟參數個數相同
**dict:
dict 的 Key 要與參數的名稱一樣,
而且不可多 不可少
(跟list長度同參數個數一樣意思)
*dict: 解包dict的keys,一般不會這樣用
 
解包與打包運算子
(**最後一個參數,當作dict變數):
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
 
不定長度的選擇性參數:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
前面講的
*第一個參數,
也是不定長度參數
但是該不定長度參數是
必要輸入,非選擇性
輸入的參數視為tuple
 
**最後一個選擇性參數:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
或如下:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
*args  **kwargs
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
*args
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
*args
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
**kwargs
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王
 
範例:
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王

加入好友
加入社群
Python函數參數使用*list或*tuple(長度同參數個數), **dict(取value), *dict(取key)解包的差別? *第一個(不定長度)參數:打包為tuple,**最後一個(不定長度)選擇性參數:打包為dict,解包時dict的key要與參數的名稱一樣,而且不可多,不可少,解包與打包運算子 - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *