目錄
- 一.前言
- 二.Python 不定長引數 argc/*kargcs 簡介
- 1.函式不定長引數 *args 使用
- 2.函式不定長引數 **kwargs 使用
- 3.函式不定長引數*args 和**kwargs 只能放在形參的末尾,順序不能錯.
- 三.Python 不定長引數 argc/*kargcs 實戰
- 四.Python 不定長引數 argc/*kargcs 總結
- 五.猜你喜歡
零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門
一.前言
在 Python 函式的宣告和呼叫 中我們簡單的了解了函式的相關使用,然而在函式傳遞引數的時候,我們埋下了一個坑,關于不定長引數的傳遞我們還沒有講,今天這篇文章主要就是講解這個問題,
Python 內置函式 print,這個函式想大家都會用,觀察如下代碼:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 不定長引數 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
a = 1.0
b = False
c = "python教程 - 猿說編程"
print("a = %g" % (a))
print("a = %g b = %d" % (a,b))
print("a = %g b = %d c = %s" % (a,b,c))
'''
輸出結果:
a = 1
a = 1 b = 0
a = 1 b = 0 c = python教程 - 猿說編程
'''
問題來了,內置 Python 內置函式 print 到底需要傳遞幾個引數??

二.Python 不定長引數 argc/*kargcs 簡介
Python 函式的不定長引數包含 *args 和 **kwargs ,完整實體如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 不定長引數 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
def function_print(*args,**kwargs): # 傳遞不定長引數,即引數個數不固定
print(args)
print(kwargs)
function_print()
'''
輸出結果:
()
{}
'''
代碼分析:由輸出結果可以看出來,第一個形參 args 是元組 tuple 型別,第二個形參 *kwargs 是字典 dict 型別.
1.函式不定長引數**** ***args 使用**
a.形參 *args 型別是元組 tuple,外部呼叫函式時傳遞的引數不論是整數還是 BOOL 值或者是字串 string ,實際上傳遞的都是元組資料;
b.如果函式形參是不定長引數,外部呼叫函式傳遞多個引數時,默認按順序實參匹配形參,剩余的引數全部作為(元組)不定長引數傳遞;
c.如果沒有為函式的不定長引數傳遞引數,默認為空元組();
示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 不定長引數 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
#普通形參
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.如果沒有為函式的不定長引數傳遞引數,默認為空字典 {} ;
示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 不定長引數 *argc/**kargcs.py
@Time:2021/3/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
#普通函式
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教程")
'''
輸出結果:
普通函式形參 : 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 只能放在形參的末尾,順序不能錯.
def function_print(arg1,*args,**kwargs): # *args,**kwargs 必須在形參的末尾,順序不能亂
pass
三.Python 不定長引數 argc/*kargcs 實戰
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 不定長引數 *argc/**kargcs.py
@Time:2021/3/29 07:37
@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)
'''
輸出結果:
False 1 () {'b': 23, 'h': 4, 'v': 5}
hello world False (0, True) {'j': 'python教程', 'a': True}
'''
注意:注意引數的順序匹配
四.Python 不定長引數 argc/*kargcs 總結
注意函式傳參的三種形式:
- 1.普通傳參;
- 2.預設引數,如果外部沒有為預設引數傳遞實參,形參等于默認值;
- 3.注意不定長引數的拆包,普通實參打包為元組 tuple 型別,關鍵字引數打包為字典 dict 型別;
五.猜你喜歡
- Python 配置環境
- Python 變數
- Python 運算子
- Python 條件判斷 if/else
- Python while 回圈
- Python break
- Python continue
- Python for 回圈
- Python 字串
- Python 串列 list
- Python 元組 tuple
- Python 字典 dict
- Python 條件推導式
- Python 串列推導式
- Python 字典推導式
未經允許不得轉載:猿說編程 ? Python 不定長引數 *argc/**kargcs
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285602.html
標籤:Python
上一篇:Python爬蟲實戰,Scrapy實戰,爬取并簡單分析安居客租房資訊
下一篇:芯片驗證作業初有感
