Python中不定長(zhǎng)參數(shù)

測(cè)試輸入如下,一個(gè)tuple,一個(gè)dict

lls = (78, 'stupid')
dds = dict(k1=1, k2=2, k3=3, name='stupid', num=76)

元組傳入固定參數(shù)函數(shù)

通過(guò)*拆包

def unpack(num, word):
    print('hope num...{}'.format(num))
    print('hope stupid..'+word)
    
unpack(*lls)

輸出如下:

hope num...78
hope stupid..stupid



不定長(zhǎng)參數(shù)*args

傳入元組時(shí)仍當(dāng)作單個(gè)參數(shù)處理,同上拆包

def unpack2(*content):
    print(repr(content))
    print(', '.join('hope num...{}'.format(num) for num in content))
    unpack2(lls)#((78, 'stupid'),)

值得注意的是

    #unpack2(*lls, 96) #SyntaxError: only named arguments may follow *expression
    unpack2(96, *lls) # 拆包符號(hào)僅能作最后一個(gè)參數(shù)
    unpack2(*(lls+(1,))) #Solution

引用StackOverFlow的一篇回答

只允許星號(hào)表達(dá)式作為參數(shù)列表中的最后一項(xiàng)。這將簡(jiǎn)化拆包代碼,并使得允許將星號(hào)表達(dá)式分配給一個(gè)迭代器。這種行為被拒絕了,因?yàn)檫@太令人吃驚了。(違反了'最少驚訝原則')

但這種情況只會(huì)出現(xiàn)在Python2中。
Python3有“僅限關(guān)鍵字參數(shù)”
>>> def f(a, *, b):
··· return a, b
···
>>> f(1, b=2)
(1,2)


不定長(zhǎng)參數(shù)/dict的拆包表達(dá)式:**args

**dict將每個(gè)鍵值對(duì)元素作為單個(gè)元素作為參數(shù)傳入。

**dict放在形式參數(shù)末尾,鍵值對(duì)與其他形式參數(shù)名匹配,剩余的存入形參dict。

def depack(func):
    def unpack3(name, num, **content):
        print(repr(content)) #{'k3': 3, 'k2': 2, 'k1': 1}
        print(', '.join(name*time for name,time in content.items())) #k3k3k3, k2k2, k1
        func(num, name)
    return unpack3

@depack
def unpack(num, word):
    print('hope num...{}'.format(num)) #hope num...76
    print('hope stupid..'+word) #hope stupid..stupid

unpack(**dds)

輸出如下:

{'k3': 3, 'k2': 2, 'k1': 1}
k3k3k3, k2k2, k1
hope num...76
hope stupid..stupid

end

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python 是一種相當(dāng)高級(jí)的語(yǔ)言,通過(guò) Python 解釋器把符合語(yǔ)法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 2,031評(píng)論 0 3
  • 兩本不錯(cuò)的書: 《Python參考手冊(cè)》:對(duì)Python各個(gè)標(biāo)準(zhǔn)模塊,特性介紹的比較詳細(xì)。 《Python核心編程...
    靜熙老師哈哈哈閱讀 3,441評(píng)論 0 80
  • 昨宵難寐東窗倚,愁恨東風(fēng),愁恨東風(fēng),不送思情至帳中。 滄桑閱盡紅塵里,惟愿相逢,惟愿相逢,又恐相逢是夢(mèng)中。
    戚北林閱讀 275評(píng)論 0 0
  • 夏季,比起酷熱難耐的白晝更喜歡微風(fēng)徐徐的夜晚。窩在沙發(fā)里,閉著眼睛,四肢攤開,就那么靜靜躺著… 對(duì)于駕校教練這一職...
    Shero栗子閱讀 294評(píng)論 0 0
  • 《你人生最重的枷鎖是什么》 一 放棄部分安全感的有3個(gè) 《1 放棄求全,深入聚焦 現(xiàn)在是資訊爆炸的時(shí)代,人也沒(méi)有那...
    劍有偏鋒閱讀 223評(píng)論 0 1

友情鏈接更多精彩內(nèi)容