目录
- 一.前言
- 二.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 不定长参数 *argc/**kargcs
本文由博客 - 猿说编程 猿说编程 发布!
来源:https://www.cnblogs.com/shuopython/p/14867063.html
图文来源于网络,如有侵权请联系删除。