天天看點

&在python是什麼意思_在Python中星号*是什麼意思?

&在python是什麼意思_在Python中星号*是什麼意思?

慕少森

看見函數定義在語言參考中。如果表格*identifier則初始化為接收任何多餘位置參數的元組,預設為空元組。如果表格**identifier則初始化為接收任何多餘關鍵字參數的新字典,預設為新的空字典。另外,見函數調用.假設您知道什麼是位置參數和關鍵字參數,下面是一些示例:例1:# Excess keyword argument (python 2) example:def foo(a, b, c, **args):

    print "a = %s" % (a,)

    print "b = %s" % (b,)

    print "c = %s" % (c,)

    print args

foo(a="testa", d="excess", c="testc", b="testb", k="another_excess")正如您在上面的例子中所看到的,我們隻有參數a, b, c在簽署foo功能。自d和k不存在,它們被放入args字典中。程式的輸出是:a = testa

b = testb

c = testc{'k': 'another_excess', 'd': 'excess'}例2:# Excess positional argument (python 2) example:def foo(a, b, c, *args):

    print "a = %s" % (a,)

    print "b = %s" % (b,)

    print "c = %s" % (c,)

    print args

foo("testa", "testb", "testc", "excess", "another_excess")在這裡,由于我們在測試位置參數,多餘的部分必須在最後,并且*args将它們打包成一個元組,是以程式的輸出如下:a = testa

b = testb

c = testc('excess', 'another_excess')還可以将字典或元組解壓縮為函數的參數:def foo(a,b,c,**args):

    print "a=%s" % (a,)

    print "b=%s" % (b,)

    print "c=%s" % (c,)

    print "args=%s" % (args,)argdict = dict(a="testa", b="testb", c="testc", excessarg="string")foo(**argdict)指紋:a=testa

b=testb

c=testc

args={'excessarg': 'string'}和def foo(a,b,c,*args):

    print "a=%s" % (a,)

    print "b=%s" % (b,)

    print "c=%s" % (c,)

    print "args=%s" % (args,)argtuple = ("testa","testb","testc","excess")foo(*argtuple)指紋:a=testa

b=testb

c=testc

args=('excess',)