函式的一般引數(引數個數可確定):
1 # x、y、z 為形參 2 def func1(x, y, z): 3 print("x=%s" % x) 4 print("y=%s" % y) 5 print("z=%s" % z) 6 return 0 7 # 1、2、3為實參(此處的1、2、3為位置引數,按順序傳給形參,要求實參形參一一對應),實參的數量不得多于形參的數量 8 a = func1(1, 2, 3) 9 # x=1、z=3、y=2為關鍵字引數,與形參位置無關 10 b = func1(x=1, z=3, y=2) 11 # 當同時有位置引數和關鍵字引數時,位置引數不能寫在關鍵字引數后面,且引數需要一一對應 12 c = func1(1, 2, z=3) #正確示例 13 d = func1(x=1, 2, 3) #錯誤示例 SyntaxError: positional argument follows keyword argument 14 e = func1(1, 2, x=2) #錯誤示例 func1() got multiple values for argument 'x'
函式的默認引數:
1 # 此處的port和dbname引數均為默認引數,當呼叫conn函式未傳遞給port引數值時,使用默認值3306,當傳遞引數給默認引數時,使用傳入的引數 2 def conn(host, port=2003, dbname="OSRDB"): 3 print("jdbc:oscar://{host_ip}:{PORT}/{DBNAME}......".format(host_ip=host, PORT=port, DBNAME=dbname)) 4 return 0 5 conn(host="127.0.0.1",dbname="ECRDB") 6 7 # >>> jdbc:oscar://127.0.0.1:2003/ECRDB......
函式的引陣列:*args和**kwargs
1 def test(x,y): 2 print(x) 3 print(y) 4 return 0 5 test(1,2,3) #報錯,因為實參多于形參 TypeError: test() takes 2 positional arguments but 3 were given 6 7 # 傳遞數量不固定的實參時,可以使用帶*的形參,即引陣列 8 # 注意引陣列要放在位置引數和關鍵字引數的后面 9 10 # *args將多余的位置引數變成了一個元組 11 def test1(a,*args): 12 print(a) # 1 13 print(args) # (2, 3, 4, 5) 14 print(type(args)) # <class 'tuple'> 15 print(args[1]) # 3 16 return 0 17 test1(1,2,3,4,5) 18 19 # 實參*[串列]的使用 20 def test2(a,*args): 21 print(a) # 1 22 print(args) # (2, 3, 4, 5, {'a': 1}) 23 print(type(args)) # <class 'tuple'> 24 print(args[1]) # 3 25 return 0 26 test2(*[1,2,3,4,5],{"a":1}) # *[1,2,3,4,5] = 1,2,3,4,5 27 28 # **kwargs將多余的關鍵字引數變成了一個字典 29 def test3(a,**kwargs): 30 print(a) # 1 31 print(kwargs) # {'b': 2, 'c': 3, 'd': 4, 'e': 5} 32 print(type(kwargs)) # <class 'dict'> 33 print(kwargs["c"]) # 3 34 return 0 35 test3(a=1,b=2,c=3,d=4,e=5) 36 37 # 實參**字典的使用 38 def test4(a,**kwargs): 39 print(a) # 1 40 print(kwargs) # {'b': 2, 'c': 3, 'd': 4} 41 print(type(kwargs)) # <class 'dict'> 42 print(kwargs["c"]) # 3 43 return 0 44 test4(**{"a":1,"b":2,"c":3, "d":4}) # **{"a":1,"b":2,"c":3, "d":4} = {"a":1},{"b":2},{"c":3},{"d":4} 45 46 47 # *args和**kwargs同時使用時, 48 # 形參:*args要放在**kwargs前面, 49 # 實參:位置引數放在關鍵字引數的前面 50 def test5(name, age=18, *args, **kwargs): 51 print(name) # tj 52 print(age) # 2 53 print(args) # (1, 3) 54 print(kwargs) # {'b': 2, 'c': 18} 55 return 0 56 test5("tj", 2, 1, 3, b=2, c=18)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143932.html
標籤:Python
下一篇:Python--函式&程序
