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


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

出來混遲早是要還的

 

一.函數不定長參數語法

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

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

 

輸出結果:

()
{}

 

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

 

    1.*args的使用方法 :

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

    b.如果函數形參是不定長參數,外部調用函數傳遞多個參數時,默認按順序實參匹配形參,剩余的參數全部作為(元組)不定長參數傳遞;

    c.如果沒有為函數的不定長參數傳遞參數,默認為空元組();

    示例代碼如下:

#普通形參
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教程")

 

    輸出結果:

普通形參 : 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.如果沒有為函數的不定長參數傳遞參數,默認為空字典{};

    示例代碼如下:

#普通函數
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教程")

    輸出結果:

 

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

別慌

 

二.函數不定長參數實戰

# !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.缺省參數,如果外部沒有為缺省參數傳遞實參,形參等於默認值

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

 

猜你喜歡:

    1.python元組

    2.python字典

    3.python 函數聲明和調用

 

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

 

技術交流、商務合作請直接聯系博主
掃碼或搜索:猿說python
python教程公眾號
猿說python
微信公眾號 掃一掃關注


免責聲明!

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



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