Python不定參數函數


1. 元組形式

def test1(*args):

    print('################test1################')
    print(type(args))
    print(args)

正確調用:

test1(1, 2)          #args在函數體內部為tuple類型

錯誤調用:

test1(1, b=2)      #TypeError: test1() got an unexpected keyword argument 'b'
test1(a=1, b=2)  #TypeError: test1() got an unexpected keyword argument 'a'
test1(a=1, 2)      #TypeError: test1() got an unexpected keyword argument 'a'

2. 字典形式

def test2(**kargs):

    print('################test2################')
    print(type(kargs))
    print(kargs)

正確調用:

test2(a=1, b=2)  #kargs在函數體內部為dict類型

錯誤調用:

test2(1, 2)          #TypeError: test2() takes exactly 0 arguments (2 given)
test2(1, b=2)      #TypeError: test2() takes exactly 0 arguments (2 given)
test2(a=1, 2)      #SyntaxError: non-keyword arg after keyword arg

3. 混合形式

def test3(*args, **kargs):

    print('################test3################')
    print(type(args))
    print(args)
    print(type(kargs))
    print(kargs)

正確調用:

test3(1, 2)          #args在函數體內部為tuple類型,kargs為空dict類型
test3(1, b=2)      #args在函數體內部為tuple類型,kargs為dict類型
test3(a=1, b=2)  #args在函數體內部為空tuple類型,kargs為dict類型

錯誤調用:

test3(a=1, 2)      #SyntaxError: non-keyword arg after keyword arg

4. 其他形式1

def test4(a = ()):

    print('################test4################')
    print(type(a))
    print(a)

正確調用:

test4((1, 2))        #a在函數體內部為tuple類型

test4(a=(1, 2))    #a在函數體內部為tuple類型

test4((1,))          #a在函數體內部為tuple類型

test4(a=(1,))      #a在函數體內部為tuple類型

test4((1))           #a在函數體內部為int類型,非tuple類型

test4(a=(1))       #a在函數體內部為int類型,非tuple類型

test4(1)             #a在函數體內部為int類型,非tuple類型

test4(a=1)         #a在函數體內部為int類型,非tuple類型

錯誤調用:

test4(1, 2)          #TypeError: test4() takes at most 1 argument (2 given)

test4(1, b=2)      #TypeError: test4() got an unexpected keyword argument 'b'

test4(a=1, b=2)  #TypeError: test4() got an unexpected keyword argument 'b'

5. 其他形式2

def test5(b = {}):

    print('################test5################')
    print(type(b))
    print(b)

正確調用:

test5({'a':2})       #b在函數體內部為dict類型

test5(b={'a':2})

test5({'a':2,'b':3})#b在函數體內部為dict類型

test5(b={'a':2,'b':3})

test5(b=2)           #b在函數體內部為int類型,非dict類型

錯誤調用:

test5(a=1, b=2)   #TypeError: test5() got an unexpected keyword argument 'a'

test5(1, 2)           #TypeError: test5() takes at most 1 argument (2 given)

test5(1, b=2)       #TypeError: test5() got multiple values for keyword argument 'b'

6. 其他形式3

def test6(a = (), b = {}):

    print('################test6################')
    print(type(a))
    print(a)
    print(type(b))
    print(b)

正確調用:

test6(1, 2)

test6(a=1, b=2)

test6(a=1, b=2)

test6((1, 2), {'c':8})

test6({'c':8})

test6(b={'c':8})

test6((1, 2), b=2)

test6((1, 2), b=2)

錯誤調用:

test6(a=1, 2)       #SyntaxError: non-keyword arg after keyword arg

test6(1, 2, b=2)   #TypeError: test6() got multiple values for keyword argument 'b'

 

關於不定參數函數中使用傳入參數調用其他固定參數函數的使用請移駕至:http://www.cnblogs.com/doudongchun/p/3704123.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM