python 不定长参数_python不定长参数 *argc,**kargcs(24)

本文详细介绍了Python中函数不定长参数的使用,包括*args和**kwargs的语法、实战示例及重点总结。*args用于接收位置参数,形成元组;**kwargs则用于接收关键字参数,形成字典。强调两者必须放置在形参末尾,并通过实例解析了参数的匹配和拆包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章首发微信公众号,微信搜索:猿说python

python函数的声明和调用 中我们简单的了解了函数的相关使用,然而在函数传递参数的时候,我们埋下了一个坑,关于不定长参数的传递我们还没有讲,今天这篇文章主要就是讲解这个问题。

62cc8b5d6a45c8eb31fcebf34cd8bdeb.png

一.函数不定长参数语法

函数的不定长参数包含*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教程")

输出结果:

普通函数形参 : 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

eb15504d5667477b7463f227b0dab78a.png

二.函数不定长参数实战

# !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)

输出结果:

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

想了解更多python内容请直接搜索微信公众号:猿说python

Python教程 - 猿说Python​www.shuopython.com
b2694887f02ed022df40b4d6e88525a6.png

本人也还在学习python中,博客会持续更新ing,有兴趣的小伙伴关注走一波,推荐浏览个人博客网站:猿说python,文章采用树状分类,结构目录清晰一点,文章内容有问题的话欢迎给出建议或者直接留言.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值