python單星號(hào)(*)與雙星號(hào)(**)使用示例demo
本章將詳細(xì)介紹python中*與**操作符的使用場(chǎng)景以及注意事項(xiàng),并給出示例demo。
1.作為運(yùn)算符
*表示乘法運(yùn)算
**表示乘方運(yùn)算
代碼 示例:
#1.* ** 作為運(yùn)算符
print('\n------運(yùn)算符測(cè)試------')
a = 3*2 #乘法
b = 3**2 #乘方
print("a = ", a) #輸出6
print("b = ", b) #輸出9
執(zhí)行結(jié)果:

2.作為函數(shù)形參
*在python中做函數(shù)形參,表示的是一個(gè)可變長(zhǎng)度的序列,類型為tuple,即將所有參數(shù)放入一個(gè)元組(tuple)中,被函數(shù)使用。
**在python中做函數(shù)形參,表示的是一個(gè)可變長(zhǎng)度的序列,類型為dict,即將所有的關(guān)鍵字參數(shù),放入一個(gè)字典(dict)中, 被函數(shù)使用。
*與**作為形參同時(shí)出現(xiàn)時(shí),**必須在最后面.
代碼示例:
#2.作為形參
print('\n------形參測(cè)試------')
def printx(*arg1, **arg2):
print("arg1={0}, type:{1}".format(arg1, type(arg1)))
print("arg2={0}, type:{1}".format(arg2, type(arg2)))
#調(diào)用
P1 = printx(1,2, key1=1, key2=2)代碼執(zhí)行結(jié)果:

3.作為函數(shù)實(shí)參
在list/tuple/set前加*,會(huì)把序列中的所有元素解包成位置參數(shù)
在dict前加*,會(huì)把dict的鍵變成位置參數(shù);加**,把字典的鍵值對(duì)變成關(guān)鍵字參數(shù)。
A = (a,b,c)
B = {“key1” :1, “key2”:2}
P3 = Printx(*A) # 等同于printx(a,b,c)
P3 = Printx(*A, *B) #等同于printx(a,b,c,key1,key2)
P3 = Printx(*A, **B) #等同于printx(a,b,c,key1=1,key2=2)
代碼示例:
def printx(*arg1, **arg2):
print("arg1={0}, type:{1}".format(arg1, type(arg1)))
print("arg2={0}, type:{1}".format(arg2, type(arg2)))
#3.實(shí)參測(cè)試
print('\n------實(shí)參測(cè)試------')
A = (1,2,3)
K1 = {'key1':1, 'key2':2}
P2 = printx(*A, *K1) #注意在dict前加一個(gè)*,只把dict的 '鍵' 作為位置參傳遞
print('')
P3= printx(*A, **K1)執(zhí)行結(jié)果:

4. 作為序列解包
注意序列解包時(shí)*解包為list,不再是tuple了
1. 先對(duì)不帶*的變量解包,剩余的數(shù)據(jù)在劃分給帶*的變量
x,y,*z = 1,2,3,4,5 #等同于 x=1, y = 2, z= [3,4,5]
X,*y,z = 1,2,3,4,5 #等同于 x=1, y = [2,3,4], z= 5
2. 如果左值比右值要多,那么帶 * 的變量默認(rèn)為空列表
x,y,*z = 1,2 #等同于 x=1, y = 2, z= []
x,*y,z = 1,2 #x=1, y = [], z= 2
3. 單*只解包dict的鍵, **解包dict鍵值對(duì)
key_A = {‘key1’:1, ‘key2’:2}
key_B = {“key3” :3, “key4”:4}
X = {*key_A} #等同于x= {‘key1’, ’key2’}
X = {**key_A} #等同于x= {‘key1’:1, ‘key2’:2}
X = {**key_A, **key_B} #等同于組包,x={‘key1’:1, ‘key2’:2, “key3” :3, “key4”:4}
注意:組包時(shí),若鍵相同,則用后面的鍵值替換前面的,即最終合并后,為后面的鍵值對(duì)。
代碼示例:
#4.解包測(cè)試
print('\n------解包測(cè)試------')
x,y,*z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,*y,z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,*y,z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,y,*z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))
#解包&組包
K2 = {'key3':3, 'key4':4}
K3 = {'key5':5, 'key6':6}
k4 = {**K2, **K3}
print("k4=", k4)執(zhí)行結(jié)果:

注意
在Python中默認(rèn)的函數(shù)參數(shù)順序是:必選參數(shù)、默認(rèn)參數(shù)、*args和**kwargs。如下所示:
def testFunc(name, age=10, *agrs, **kwargs):
pass
整體測(cè)試代碼:
import torch
#1.* ** 作為運(yùn)算符
print('\n------運(yùn)算符測(cè)試------')
a = 3*2 #乘法
b = 3**2 #乘方
print("a = ", a) #輸出6
print("b = ", b) #輸出9
#2.作為形參
print('\n------形參測(cè)試------')
def printx(*arg1, **arg2):
print("arg1={0}, type:{1}".format(arg1, type(arg1)))
print("arg2={0}, type:{1}".format(arg2, type(arg2)))
#調(diào)用
P1 = printx(1,2, key1=1, key2=2)
#3.實(shí)參測(cè)試
print('\n------實(shí)參測(cè)試------')
A = (1,2,3)
K1 = {'key1':1, 'key2':2}
P2 = printx(*A, *K1) #注意在dict前加一個(gè)*,只把dict的 '鍵' 作為位置參傳遞
print('')
P3= printx(*A, **K1)
#4.解包測(cè)試
print('\n------解包測(cè)試------')
x,y,*z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,*y,z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,*y,z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))
x,y,*z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))
#解包&組包
K2 = {'key3':3, 'key4':4}
K3 = {'key5':5, 'key6':6}
k4 = {**K2, **K3}
print("k4=", k4)運(yùn)行結(jié)果:

總結(jié)
到此這篇關(guān)于python單星號(hào)(*)與雙星號(hào)(**)使用的文章就介紹到這了,更多相關(guān)python單星號(hào)(*)與雙星號(hào)(**)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基礎(chǔ)之包的導(dǎo)入和__init__.py的介紹
這篇文章主要介紹了python基礎(chǔ)之包的導(dǎo)入和__init__.py的相關(guān)資料,需要的朋友可以參考下2018-01-01
Python文檔的基本操作指南(從創(chuàng)建到發(fā)布)
在Python開(kāi)發(fā)過(guò)程中,良好的文檔是項(xiàng)目成功的關(guān)鍵因素之一,本文將介紹Python文檔的基本操作,包括文檔字符串(docstring)、幫助函數(shù)、文檔生成工具以及文檔托管等內(nèi)容,幫助開(kāi)發(fā)者創(chuàng)建專業(yè)級(jí)的項(xiàng)目文檔,需要的朋友可以參考下2025-05-05
python3實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)文字(語(yǔ)音識(shí)別)和文字轉(zhuǎn)語(yǔ)音(語(yǔ)音合成)
這篇文章主要介紹了python3實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)文字(語(yǔ)音識(shí)別)和文字轉(zhuǎn)語(yǔ)音(語(yǔ)音合成),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python語(yǔ)言實(shí)現(xiàn)將圖片轉(zhuǎn)化為html頁(yè)面
這篇文章主要介紹了Python實(shí)現(xiàn)將圖片轉(zhuǎn)化為html頁(yè)面,具有一定參考價(jià)值,需要的朋友可以了解下。2017-12-12
pycharm利用pyspark遠(yuǎn)程連接spark集群的實(shí)現(xiàn)
由于工作需要,利用spark完成機(jī)器學(xué)習(xí)。因此需要對(duì)spark集群進(jìn)行操作。所以利用pycharm和pyspark遠(yuǎn)程連接spark集群。感興趣的可以了解一下2021-05-05

