python 不定長參數 *argc,**kargcs(19)

在 python函數的聲明和調用 中咱們簡單的瞭解了函數的相關使用,然而在函數傳遞參數的時候,咱們埋下了一個坑,關於不定長參數的傳遞咱們尚未講,今天這篇文章主要就是講解這個問題。python

出來混早晚是要還的

 

一.函數不定長參數語法

函數的不定長參數包含*args**kwargs,完整實例以下:git

1github

2微信

3ide

4函數

5spa

def function_print(*args,**kwargs): # 傳遞不定長參數,即參數個數不固定
    print(args)
    print(kwargs)
 
function_print()


輸出結果:code

1orm

2blog

()

{}

代碼分析:由輸出結果能夠看出來,第一個形參*args 是元組tuple類型,第二個形參**kwargs是字典dict類型.

 

1.*args的使用方法 :

a.形參 *args 類型是元組tuple,外部調用函數時傳遞的參數不管是整數仍是BOOL值或者是字符串str,實際上傳遞的都是元組數據;

b.若是函數形參是不定長參數,外部調用函數傳遞多個參數時,默認按順序實參匹配形參,剩餘的參數所有做爲(元組)不定長參數傳遞;

c.若是沒有爲函數的不定長參數傳遞參數,默認爲空元組();

示例代碼以下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#普通形參
def function_print1(arg):
    print("普通形參 : arg=",arg)
 
#不定長形參
def function_print2(*args):
    print("不定長形參 : args=",args)
 
#普通形參 + 不定長形參
def function_print3(arg,*args):
    print("普通形參 + 不定長形參 : arg=",arg)
    print("普通形參 + 不定長形參 : args=",args)
 
function_print1(False)
function_print1("hello world")
print("***"*20)
 
function_print2(False)
function_print2("hello world")
print("***"*20)
 
function_print3(False) # 只爲函數傳遞了一個形參,不定長參數的形參默認爲空元組()
function_print3("hello world")
print("***"*20)
 
# 若是函數的形參是不定長參數,當外部調用函數傳遞多個參數時,默認按順序匹配形參,剩餘的參數所有做爲不定長參數傳遞
function_print3(False,1,23,4,5) 
function_print3("hello world",False,0,True,"python教程")


輸出結果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


普通形參 : arg= False
普通形參 : arg= hello world
************************************************************
不定長形參 : args= (False,)
不定長形參 : args= ('hello world',)
************************************************************
普通形參 + 不定長形參 : arg= False
普通形參 + 不定長形參 : args= ()
普通形參 + 不定長形參 : arg= hello world
普通形參 + 不定長形參 : args= ()
************************************************************
普通形參 + 不定長形參 : arg= False
普通形參 + 不定長形參 : args= (1, 23, 4, 5)
普通形參 + 不定長形參 : arg= hello world
普通形參 + 不定長形參 : args= (False, 0, True, 'python教程')


 


2.**kwargs的使用方法

a.形參 **kwargs 類型是字典dict,函數外部調用函數傳遞參數時須要使用關鍵字參數,實參寫法:a=1,b=2,c=False,d=」hello」;

b.若是函數形參是不定長參數,外部調用函數傳遞多個參數時,默認按順序實參匹配形參,關鍵字參數所有做爲(字典)不定長參數傳遞;

c.若是沒有爲函數的不定長參數傳遞參數,默認爲空字典{};

示例代碼以下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

#普通函數
def function_print1(arg):
    print("普通函數形參 : arg=",arg)
 
#普通函數不定長形參
def function_print2(**kwargs):
    print("不定長形參 : args=",kwargs)
 
#普通函數形參 + 不定長形參
def function_print3(arg,**kwargs):
    print("普通函數形參 + 不定長形參 : arg=",arg)
    print("普通函數形參 + 不定長形參 : args=",kwargs)
 
function_print1(False)
function_print1("hello world")
print("***"*20)
 
function_print2(a=False)
function_print2(c="hello world")
print("***"*20)
 
function_print3(False)
function_print3("hello world")
print("***"*20)
 
function_print3(False,a=1,b=23,h=4,v=5)
function_print3("hello world",y=False,i=0,a=True,j="python教程")


輸出結果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

普通函數形參 : arg= False
普通函數形參 : arg= hello world
************************************************************
不定長形參 : args= {'a': False}
不定長形參 : args= {'c': 'hello world'}
************************************************************
普通函數形參 + 不定長形參 : arg= False
普通函數形參 + 不定長形參 : args= {}
普通函數形參 + 不定長形參 : arg= hello world
普通函數形參 + 不定長形參 : args= {}
************************************************************
普通函數形參 + 不定長形參 : arg= False
普通函數形參 + 不定長形參 : args= {'a': 1, 'b': 23, 'h': 4, 'v': 5}
普通函數形參 + 不定長形參 : arg= hello world
普通函數形參 + 不定長形參 : args= {'y': False, 'i': 0, 'a': True, 'j': 'python教程'}


 

3.函數不定長參數*args和**kwargs只能放在形參的末尾,順序不能錯.

1

2

def function_print(arg1,*args,**kwargs): # *args,**kwargs 必須在形參的末尾,順序不能亂
    pass


別慌

二.函數不定長參數實戰


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解憂
@Blog(我的博客地址): shuopython.com
@WeChat Official Account(微信公衆號):猿說python
@Github:www.github.com
 
@File:python_args.py
@Time:2019/10/3 21:48
 
@Motto:不積跬步無以致千里,不積小流無以成江海,程序人生的精彩須要堅持不懈地積累!
"""
 
'''
普通函數形參 + 不定長形參:
    arg1:普通形參
    arg1:普通形參
    args:不定長參數-元組
    kwargs:不定長參數-字典
'''
 
def function_print(arg1,arg2,*args,**kwargs):
    print(arg1,arg2,args,kwargs)
 
function_print(False,1,b=23,h=4,v=5)
function_print("hello world",False,0,True,j="python教程",a=True)


輸出結果:

1

2

False 1 () {'b': 23, 'h': 4, 'v': 5}
hello world False (0, True) {'j': 'python教程', 'a': True}


注意:注意參數的順序匹配

 

三.重點總結

注意函數傳參的三種形式:

1.普通傳參

2.缺省參數,若是外部沒有爲缺省參數傳遞實參,形參等於默認值

3.注意不定長參數的拆包,普通實參打包爲元組tuple類型,關鍵字參數打包爲字典dict類型

 

猜你喜歡:

1.python元組

2.python字典

3.python 函數聲明和調用

 

轉載請註明猿說Python » python 函數不定長參數 *argc,**kargcs

相關文章
相關標籤/搜索