日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python函數(shù)中的參數(shù)(關(guān)鍵字參數(shù),默認參數(shù),位置參數(shù),不定長參數(shù))

 LibraryPKU 2019-03-22

默認參數(shù):定義函數(shù)的時候給定變量一個默認值?! ef num(age=1):

位置參數(shù):調(diào)用函數(shù)的時候根據(jù)定義函數(shù)時的形參位置和實參位置進行引用。

關(guān)鍵字參數(shù):如果定義的函數(shù)中含有關(guān)鍵字參數(shù),調(diào)用函數(shù)時必須要傳如該關(guān)鍵字對應(yīng)的實參。

不定長參數(shù):在定義函數(shù)的時候不確定傳入的參數(shù)的數(shù)量(可能是0個或多個)  def num(*args,**args):  (不定長參數(shù)的標(biāo)志符號是*和**,args和kwargs只是變量的名字,可以改為任意的變量如(*num,**kwnum))

  *+變量名1,可以接受被其他參數(shù)接受后剩下的任意的形參(不包括賦值語句),放進一個元組里,這個元組的名字是前面的變量名1(所以位置參數(shù)必須在此參數(shù)之前)

  **+變量名2,可以接受被其他參數(shù)接受后剩下的任意賦值語句,放進一個字典中,這個字典的名字是前面的變量名2(所以關(guān)鍵字參數(shù)和默認參數(shù)必須在此參數(shù)之前,*+變量名也要在此參數(shù)之前)

測試上面的總結(jié)是否正確

1
2
3
def num_0(a,b,c,*args,city='beijing',name,**kwnum):
    print(a,b,c,name,city,args,kwnum)  # 輸出的時候直接用*或者** 的變量名
num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian')
1
2
3
4
#結(jié)果<br>D:\pycharm_project\裝飾器\venv\Scripts\python.exe D:/pycharm_project/裝飾器/venv/text.py
1 2 3 jack hangzhou (4, 5, 6, 7) {'age': 18, 'country': 'haidian'}
Process finished with exit code 0

 最后總結(jié)

調(diào)用函數(shù)傳遞實參的時候,先傳變量/定量,再傳賦值語句(num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian'))

定義函數(shù)的時候直接按此順序定義形參(def num_0(a,b,c,*args,city='beijing',name,**kwnum):)(位置參數(shù),*變量名,默認參數(shù),關(guān)鍵字參數(shù),**變量名

接下來討論一下不定長參數(shù)中的 * 和 ** 還有什么用處

1,當(dāng)在函數(shù)的形參中使用時(和上面的例子相同)
*t:將所有的其他位置的實參(變量/定量)獲取,并將它們打包到元祖中,并賦值給此形參

復(fù)制代碼
def foo(*t): print(t)foo(1,2,3)
復(fù)制代碼
復(fù)制代碼
(1,2,3)
復(fù)制代碼

**t:將所有的其他位置的實參(賦值語句)獲取,并將它們打包到字典中,并賦值給此參數(shù)

復(fù)制代碼
def foo(**t): print(t)foo(a=1,b=2)
復(fù)制代碼
復(fù)制代碼
{'x': 1, 'y': 2}
復(fù)制代碼

2,當(dāng)在調(diào)用函數(shù)的時候使用(實參中)
*tuple_a:將此元祖的元素,當(dāng)做函數(shù)調(diào)用的位置參數(shù)

復(fù)制代碼
def foo(a,b): print(a,b)tuple_a = (1,2)foo(*tuple_a)
復(fù)制代碼
1,2

**dict_a:將字典中的鍵值對,當(dāng)做函數(shù)調(diào)用的關(guān)鍵字參數(shù)

復(fù)制代碼
def foo(x, y): print(x, y)dict_a = {'x':1, 'y':2}foo(**dict_a)
復(fù)制代碼
1,2

3,在匹配和for循環(huán)中
*x意味著‘匹配多余的元素’,x是一個列表

復(fù)制代碼
>>>x, *xs = (1, 2, 3, 4)>>>xs[2, 3, 4]
>>>x,
*xs = [1, 2, 3, 4]>>>xs[2, 3, 4]

>>> *xs, x = (1, 2, 3, 4)
>>> xs
[1, 2, 3]
>>> x
4

>>> x, *xs, y = (1, 2, 3, 4)
>>> x
1
>>> xs
[2, 3]
>>> y
4
復(fù)制代碼
復(fù)制代碼
for (x, *y, z) in [ (1, 2, 3, 4) ]: print(x, y, z)1 [2, 3] 4
復(fù)制代碼

4,可以用于合并字典

復(fù)制代碼
dict_a = {'a':1,'b':2}dict_b = {'b':3,'c':4}dict_c = {**dict_a,**dict_b}print(dict_c)
復(fù)制代碼
復(fù)制代碼
{'a': 1, 'b': 3, 'c': 4}
復(fù)制代碼
*t 表示獲取此函數(shù)的所有其他位置參數(shù),并將它們作為元組打包到此參數(shù)中

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多