<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
我們使用兩個運運算元 *(用於元組)和 **(用於字典)。
考慮這樣一種情況,我們有一個接收四個引數的函數。我們想呼叫這個函數,我們有一個大小為 4 的列表,其中包含函數的所有引數。如果我們只是將一個列表傳遞給函數,則呼叫不起作用。
# 一個演示打包和解包需求的 Python 程式 # 一個接受 4 個引數並列印它們的範例函數。 def fun(a, b, c, d): print(a, b, c, d) # 驅動程式程式碼 my_list = [1, 2, 3, 4] # 這不起作用 fun(my_list)
輸出 :
TypeError: fun() takes exactly 4 arguments (1 given)
包我們可以使用 ***** 來解包列表,以便它的所有元素都可以作為不同的引數傳遞。
# 一個帶有 4 個引數並列印的範例函數, def fun(a, b, c, d): print(a, b, c, d) # 驅動程式程式碼 my_list = [1, 2, 3, 4] # 將列表解壓縮為四個引數 fun(*my_list)
輸出 :
(1, 2, 3, 4)
我們需要記住,引數的數量必須與我們為引數解包的列表的長度相同。
# 當 len(args) != 函數所需的實際引數沒有時出錯 args = [0, 1, 4, 9] def func(a, b, c): return a + b + c # 使用解包引數呼叫函數 func(*args)
輸出:
Traceback (most recent call last):
File "/home/592a8d2a568a0c12061950aa99d6dec3.py", line 10, in <module>
func(*args)
TypeError: func() takes 3 positional arguments but 4 were given
作為另一個範例,考慮需要單獨的開始和停止引數的內建 range() 函數。如果它們不能單獨使用,請使用 *-operator 編寫函數呼叫以將引數從列表或元組中解包出來:
>>> >>> range(3, 6) # 帶有單獨引數的正常呼叫 [3, 4, 5] >>> args = [3, 6] >>> range(*args) # 使用從列表中解包的引數呼叫 [3, 4, 5]
當我們不知道需要將多少個引數傳遞給 python 函數時,我們可以使用 Packing 將所有引數打包到一個元組中。
# 演示打包使用的 Python 程式 # 此函數使用打包來彙總未知數量的引數 def mySum(*args): return sum(args) # 驅動程式程式碼 print(mySum(1, 2, 3, 4, 5)) print(mySum(10, 20))
輸出:
15
30
上述函數 mySum() 執行“打包”以將此方法呼叫接收到的所有引數打包到一個變數中。一旦我們有了這個“打包”變數,我們就可以用它來做我們用普通元組做的事情。args[0] 和 args[1] 會分別給你第一個和第二個引數。由於我們的元組是不可變的,您可以將 args 元組轉換為列表,以便您還可以修改、刪除和重新排列 i 中的專案。
下面是一個顯示打包和拆包的範例。
# 一個 Python 程式,用於演示打包和解包。 # 一個範例 python 函數,它接受三個引數並列印它們 def fun1(a, b, c): print(a, b, c) # 另一個範例函數。 # 這是包裝的一個例子。 傳遞給 fun2 的所有引數都打包到元組 *args 中。 def fun2(*args): # 將 args 元組轉換為列表,以便我們修改它 args = list(args) # 修改引數 args[0] = 'Haiyong' args[1] = 'awesome' # 拆包引數並呼叫 fun1() fun1(*args) # 驅動程式程式碼 fun2('Hello', 'beautiful', 'world!')
輸出:
(Haiyong, awesome, world!)
# 演示使用 ** 解包字典項的範例程式 def fun(a, b, c): print(a, b, c) # 解包字典的呼叫 d = {'a':2, 'b':4, 'c':10} fun(**d)
輸出:
2 4 10
這裡 ** 解壓了與它一起使用的字典,並將字典中的專案作為關鍵字引數傳遞給函數。所以寫“fun(1, **d)”就相當於寫“fun(1, b=4, c=10)”。
# 一個 Python 程式,用於演示使用 ** 打包字典項 def fun(**kwargs): # kwargs 是一個字典 print(type(kwargs)) # 列印字典專案 for key in kwargs: print("%s = %s" % (key, kwargs[key])) # 驅動程式程式碼 fun(name="geeks", ID="101", language="Python")
輸出:
<class 'dict'>
name = geeks
ID = 101
language = Python
應用和要點 :
到此這篇關於Python 變數教學之打包和解包引數的文章就介紹到這了,更多相關Python 打包解包引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45