为什么python打包的应用那么大_浅谈python3打包与拆包在函数的应用详解
1、序列(拆包)
*用作序列拆包:*可對字符串、列表、集合、元組、字典、數字元素等序列進行拆包
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
優先對位置變量賦值,再對拆包的賦值
#測試結果
print(a,b,c)
0 1 [2,3]
0 [1,2] 3
0 1 [] #優先滿足普通變量a、b的賦值
0 [] 1 #優先滿足普通變量a、c的賦值
了解了一些基礎的 * 拆包后我們現在來聊聊函數中的打包和拆包:
2、函數定義的多種形參(打包)
函數定義時多種形參的位置順序
函數形參順序為:def 函數名(【位置參數】,【*元組參數】,【默認參數=默認值】,【**字典參數】):
注意:形參里面的 * 和 ** 的含義是打包
【位置參數】:最普通的形參,必須與實參一 一對齊
【 * 元組參數】:把字符串、列表、集合、元組、字典、數字元素等序列打包成元組作為形參
【**字典參數】:把多個實參打包成字典作為形參
【默認參數=默認值】:函數調用時沒有傳入時用默認值,傳入時用傳入值
def 函數名(a,*b,c=3,**d):
print("a:",a)
print('b:',b)
print('c:',c)
print('d:',d)
# *元組參數只接受單一的值,而**字典參數是進行接收鍵值對
函數名(1,2,3,4,5,6,7,name="小明",age=18,sex="男")
#輸出結果:
a: 1
b: (2, 3, 4, 5, 6, 7)
c: 3
d: {'name': '小明', 'age': 18, 'sex': '男'}
3、函數調用時的實參(拆包)
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將集合拆解為數字元素序列 1 2 3 4
運行結果:
[1, 2, 3, 4]
1 2 3 4
補充:
使用命名參數可大大增強函數調用的靈活性(參數位置無需一 一對應,但參數名必須一 一對應)
總結:默認參數與命名參數一樣,前者是形參,后者是實參**
讓我們結合實參和形參看一下在函數中打包與拆包
def tk(a,*b): #2、再將數字元素序列 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拆包成數字元素序列 1 2 3 4 再傳遞給元組形參*b
#輸出結果:
[1, 2, 3, 4] #a1未打包
(1, 2, 3, 4) #b1為打包后的元組
總結:函數形參和函數實參的*含義不一樣,前者是打包,后者是拆包
對單個值操作
對任意值操作
位置參數、默認參數、命名參數
*元組參數、 **字典參數
4、函數返回多值時的打包
接收函數返回值的兩種情況:
def 函數():
return 返回值1 返回值2 返回值3
#1、當用一個變量接受多個返回值時,會打包成一個元組傳遞給變量
a=函數()
print(a)
#2、用與之數目對應的變量接受多個返回值
b,c,d=函數()
print(b,c,d)
#輸出結果
(返回值1,返回值2,返回值3) #打包成元組
返回值1 返回值2 返回值3
到此這篇關于淺談python3打包與拆包在函數的應用詳解的文章就介紹到這了,更多相關python3打包與拆包內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!
時間: 2020-05-02
總結
以上是生活随笔為你收集整理的为什么python打包的应用那么大_浅谈python3打包与拆包在函数的应用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金净值到2左右可以买吗 需要分析不同
- 下一篇: 闻泰科技股票适合长期持有吗 公司主营产