欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?變量教程之打包和解包參數(shù)

 更新時(shí)間:2022年08月17日 14:21:59   作者:海擁  
這篇文章主要介紹了Python?變量教程之打包和解包參數(shù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言:

我們使用兩個(gè)運(yùn)算符 *(用于元組)和 **(用于字典)。

背景 

考慮這樣一種情況,我們有一個(gè)接收四個(gè)參數(shù)的函數(shù)。我們想調(diào)用這個(gè)函數(shù),我們有一個(gè)大小為 4 的列表,其中包含函數(shù)的所有參數(shù)。如果我們只是將一個(gè)列表傳遞給函數(shù),則調(diào)用不起作用。

# 一個(gè)演示打包和解包需求的 Python 程序

# 一個(gè)接受 4 個(gè)參數(shù)并打印它們的示例函數(shù)。
def fun(a, b, c, d):
	print(a, b, c, d)

# 驅(qū)動(dòng)程序代碼
my_list = [1, 2, 3, 4]

# 這不起作用
fun(my_list)

輸出 :

TypeError: fun() takes exactly 4 arguments (1 given)

解 

包我們可以使用 ***** 來(lái)解包列表,以便它的所有元素都可以作為不同的參數(shù)傳遞。

# 一個(gè)帶有 4 個(gè)參數(shù)并打印的示例函數(shù),
def fun(a, b, c, d):
	print(a, b, c, d)

# 驅(qū)動(dòng)程序代碼
my_list = [1, 2, 3, 4]

# 將列表解壓縮為四個(gè)參數(shù)
fun(*my_list)

輸出 :

(1, 2, 3, 4)

我們需要記住,參數(shù)的數(shù)量必須與我們?yōu)閰?shù)解包的列表的長(zhǎng)度相同。

# 當(dāng) len(args) != 函數(shù)所需的實(shí)際參數(shù)沒(méi)有時(shí)出錯(cuò)

args = [0, 1, 4, 9]
def func(a, b, c):
	return a + b + c
# 使用解包參數(shù)調(diào)用函數(shù)
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

作為另一個(gè)示例,考慮需要單獨(dú)的開(kāi)始和停止參數(shù)的內(nèi)置 range() 函數(shù)。如果它們不能單獨(dú)使用,請(qǐng)使用 *-operator 編寫函數(shù)調(diào)用以將參數(shù)從列表或元組中解包出來(lái):

>>>
>>> range(3, 6) # 帶有單獨(dú)參數(shù)的正常調(diào)用
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # 使用從列表中解包的參數(shù)調(diào)用
[3, 4, 5]

Packing 

當(dāng)我們不知道需要將多少個(gè)參數(shù)傳遞給 python 函數(shù)時(shí),我們可以使用 Packing 將所有參數(shù)打包到一個(gè)元組中。

# 演示打包使用的 Python 程序

# 此函數(shù)使用打包來(lái)匯總未知數(shù)量的參數(shù)
def mySum(*args):
	return sum(args)

# 驅(qū)動(dòng)程序代碼
print(mySum(1, 2, 3, 4, 5))
print(mySum(10, 20))

輸出:

15 
30

上述函數(shù) mySum() 執(zhí)行“打包”以將此方法調(diào)用接收到的所有參數(shù)打包到一個(gè)變量中。一旦我們有了這個(gè)“打包”變量,我們就可以用它來(lái)做我們用普通元組做的事情。args[0] 和 args[1] 會(huì)分別給你第一個(gè)和第二個(gè)參數(shù)。由于我們的元組是不可變的,您可以將 args 元組轉(zhuǎn)換為列表,以便您還可以修改、刪除和重新排列 i 中的項(xiàng)目。

打包和拆包 

下面是一個(gè)顯示打包和拆包的示例。

# 一個(gè) Python 程序,用于演示打包和解包。

# 一個(gè)示例 python 函數(shù),它接受三個(gè)參數(shù)并打印它們
def fun1(a, b, c):
	print(a, b, c)

# 另一個(gè)示例函數(shù)。
# 這是包裝的一個(gè)例子。 傳遞給 fun2 的所有參數(shù)都打包到元組 *args 中。
def fun2(*args):

	# 將 args 元組轉(zhuǎn)換為列表,以便我們修改它
	args = list(args)

	# 修改參數(shù)
	args[0] = 'Haiyong'
	args[1] = 'awesome'

	# 拆包參數(shù)并調(diào)用 fun1()
	fun1(*args)

# 驅(qū)動(dòng)程序代碼
fun2('Hello', 'beautiful', 'world!')

輸出:

(Haiyong, awesome, world!)

用于字典

# 演示使用 ** 解包字典項(xiàng)的示例程序
def fun(a, b, c):
	print(a, b, c)

# 解包字典的調(diào)用
d = {'a':2, 'b':4, 'c':10}
fun(**d)

輸出:

2 4 10

這里 ** 解壓了與它一起使用的字典,并將字典中的項(xiàng)目作為關(guān)鍵字參數(shù)傳遞給函數(shù)。所以寫“fun(1, **d)”就相當(dāng)于寫“fun(1, b=4, c=10)”。

# 一個(gè) Python 程序,用于演示使用 ** 打包字典項(xiàng)
def fun(**kwargs):

	# kwargs 是一個(gè)字典
	print(type(kwargs))

	# 打印字典項(xiàng)目
	for key in kwargs:
		print("%s = %s" % (key, kwargs[key]))

# 驅(qū)動(dòng)程序代碼
fun(name="geeks", ID="101", language="Python")

輸出:

<class 'dict'>
name = geeks
ID = 101
language = Python

應(yīng)用和要點(diǎn) :

  • 在套接字編程中用于向服務(wù)器發(fā)送大量請(qǐng)求。
  • 在 Django 框架中用于將變量參數(shù)發(fā)送到視圖函數(shù)。
  • 有些包裝函數(shù)需要我們傳入可變參數(shù)。
  • 參數(shù)的修改變得容易,但同時(shí)驗(yàn)證不正確,因此必須小心使用它們。

到此這篇關(guān)于Python 變量教程之打包和解包參數(shù)的文章就介紹到這了,更多相關(guān)Python 打包解包參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 安裝并免費(fèi)使用Pycharm專業(yè)版(學(xué)生/教師)

    安裝并免費(fèi)使用Pycharm專業(yè)版(學(xué)生/教師)

    這篇文章主要介紹了安裝并免費(fèi)使用Pycharm專業(yè)版(學(xué)生/教師),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python生成任意頻率正弦波方式

    python生成任意頻率正弦波方式

    今天小編就為大家分享一篇python生成任意頻率正弦波方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python使用win32com.client的方法示例

    Python使用win32com.client的方法示例

    本文主要介紹了Python使用win32com.client的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 用 Python 寫的文檔批量翻譯工具效果竟然超出想象

    用 Python 寫的文檔批量翻譯工具效果竟然超出想象

    這篇文章主要介紹了用 Python 寫的文檔批量翻譯工具,效果竟然超越付費(fèi)軟件,這個(gè)非常適合python辦公自動(dòng)化腳本,非常不錯(cuò),實(shí)現(xiàn)方法也很簡(jiǎn)單,需要的朋友可以參考下
    2021-05-05
  • python如何調(diào)用現(xiàn)有的matlab函數(shù)

    python如何調(diào)用現(xiàn)有的matlab函數(shù)

    這篇文章主要介紹了python如何調(diào)用現(xiàn)有的matlab函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法

    Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法

    今天小編就為大家分享一篇Python實(shí)現(xiàn)正則表達(dá)式匹配任意的郵箱方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 利用Python實(shí)現(xiàn)批量打包程序的工具

    利用Python實(shí)現(xiàn)批量打包程序的工具

    auto-py-to-exe與pyinstaller都無(wú)法直接一次性打包多個(gè)程序,想打包多個(gè)程序需要重新操作一遍。所以本文將用Python實(shí)現(xiàn)批量打包程序的工具,感興趣的可以了解一下
    2022-07-07
  • python ansible自動(dòng)化運(yùn)維工具執(zhí)行流程

    python ansible自動(dòng)化運(yùn)維工具執(zhí)行流程

    ansible是基于 paramiko 開(kāi)發(fā)的,并且基于模塊化工作,本身沒(méi)有批量部署的能力,接下來(lái)通過(guò)本文給大家分享python ansible自動(dòng)化運(yùn)維工具的特點(diǎn)及執(zhí)行流程,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Python全局鎖中如何合理運(yùn)用多線程(多進(jìn)程)

    Python全局鎖中如何合理運(yùn)用多線程(多進(jìn)程)

    這篇文章主要介紹了Python全局鎖中如何合理運(yùn)用多線程(多進(jìn)程),需要的朋友可以參考下
    2019-11-11
  • pip install 使用國(guó)內(nèi)鏡像的方法示例

    pip install 使用國(guó)內(nèi)鏡像的方法示例

    這篇文章主要介紹了pip install 使用國(guó)內(nèi)鏡像的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論