淺談python3打包與拆包在函數(shù)的應用詳解
1、序列(拆包)
*用作序列拆包:*可對字符串、列表、集合、元組、字典、數(shù)字元素等序列進行拆包
print(*(1,2,3,4,5,6)) #1 2 3 4 5 6 print(*[1,2,3,4,5,6]) #1 2 3 4 5 6
序列拆包賦值:
注意:*變量 不能在第一個位置,否則會報錯
a, b, *c = 0, 1, 2, 3 #獲取剩余部分 a, *b, c = 0, 1, 2, 3 #獲取中間部分 a, b, *c = 0, 1 a, *b, c = 0, 1
優(yōu)先對位置變量賦值,再對拆包的賦值
#測試結(jié)果
print(a,b,c)
0 1 [2,3]
0 [1,2] 3
0 1 [] #優(yōu)先滿足普通變量a、b的賦值
0 [] 1 #優(yōu)先滿足普通變量a、c的賦值
了解了一些基礎(chǔ)的 * 拆包后我們現(xiàn)在來聊聊函數(shù)中的打包和拆包:
2、函數(shù)定義的多種形參(打包)
函數(shù)定義時多種形參的位置順序
函數(shù)形參順序為:def 函數(shù)名(【位置參數(shù)】,【*元組參數(shù)】,【默認參數(shù)=默認值】,【**字典參數(shù)】):
注意:形參里面的 * 和 ** 的含義是打包
【位置參數(shù)】:最普通的形參,必須與實參一 一對齊
【 * 元組參數(shù)】:把字符串、列表、集合、元組、字典、數(shù)字元素等序列打包成元組作為形參
【**字典參數(shù)】:把多個實參打包成字典作為形參
【默認參數(shù)=默認值】:函數(shù)調(diào)用時沒有傳入時用默認值,傳入時用傳入值
def 函數(shù)名(a,*b,c=3,**d): print("a:",a) print('b:',b) print('c:',c) print('d:',d) # *元組參數(shù)只接受單一的值,而**字典參數(shù)是進行接收鍵值對 函數(shù)名(1,2,3,4,5,6,7,name="小明",age=18,sex="男") #輸出結(jié)果: a: 1 b: (2, 3, 4, 5, 6, 7) c: 3 d: {'name': '小明', 'age': 18, 'sex': '男'}
3、函數(shù)調(diào)用時的實參(拆包)
def tk(c,d,e,f,g): #d,e,f,g分別接收 1 2 3 4 print(c) print(d,e,f,g) a=[1,2,3,4] b={1,2,3,4} tk(a,*b) # *b將集合拆解為數(shù)字元素序列 1 2 3 4
運行結(jié)果:
[1, 2, 3, 4]
1 2 3 4
補充:
使用命名參數(shù)可大大增強函數(shù)調(diào)用的靈活性(參數(shù)位置無需一 一對應,但參數(shù)名必須一 一對應)
總結(jié):默認參數(shù)與命名參數(shù)一樣,前者是形參,后者是實參**
讓我們結(jié)合實參和形參看一下在函數(shù)中打包與拆包
def tk(a,*b): #2、再將數(shù)字元素序列 1 2 3 4打包成元組(1,2,3,4) print(a) print(b) a1=[1,2,3,4] b1={1,2,3,4} tk(a1,*b1) #1、先將b1拆包成數(shù)字元素序列 1 2 3 4 再傳遞給元組形參*b
#輸出結(jié)果:
[1, 2, 3, 4] #a1未打包
(1, 2, 3, 4) #b1為打包后的元組
總結(jié):函數(shù)形參和函數(shù)實參的*含義不一樣,前者是打包,后者是拆包
對單個值操作 | 對任意值操作 |
---|---|
位置參數(shù)、默認參數(shù)、命名參數(shù) | *元組參數(shù)、 **字典參數(shù) |
4、函數(shù)返回多值時的打包
接收函數(shù)返回值的兩種情況:
def 函數(shù)(): return 返回值1 返回值2 返回值3 #1、當用一個變量接受多個返回值時,會打包成一個元組傳遞給變量 a=函數(shù)() print(a) #2、用與之數(shù)目對應的變量接受多個返回值 b,c,d=函數(shù)() print(b,c,d)
#輸出結(jié)果
(返回值1,返回值2,返回值3) #打包成元組
返回值1 返回值2 返回值3
到此這篇關(guān)于淺談python3打包與拆包在函數(shù)的應用詳解的文章就介紹到這了,更多相關(guān)python3打包與拆包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用django+wechat-python-sdk 創(chuàng)建微信服務器接入的方法
今天小編就為大家分享一篇利用django+wechat-python-sdk 創(chuàng)建微信服務器接入的方法,具有很好的參考價值,希望對大家有所幫助。一起跟小編過來看看吧2019-02-02淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}
這篇文章主要介紹了淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴},具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03解決numpy矩陣相減出現(xiàn)的負值自動轉(zhuǎn)正值的問題
這篇文章主要介紹了解決numpy矩陣相減出現(xiàn)的負值自動轉(zhuǎn)正值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Pytest實現(xiàn)setup和teardown的詳細使用詳解
這篇文章主要介紹了Pytest實現(xiàn)setup和teardown的詳細使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04TensorFlow自定義損失函數(shù)來預測商品銷售量
這篇文章主要介紹了TensorFlow自定義損失函數(shù)——預測商品銷售量,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02