python函数必须有参数吗_Python函数的非固定参数

本文详细介绍了Python函数中的默认参数和参数组,包括默认参数如何为函数提供预设值,以及非固定位置参数(*args)和非固定关键字参数(**kwargs)的使用方法。文中通过实例演示了各种参数的传入方式,并强调了参数组通常放置在参数列表最后的原则。

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

一、概述

在原来的文章中我已经写了,位置参数和关键字参数,下面我们来谈谈默认参数和参数组

二、默认参数

默认参数指的是,我们在传参之前,先给参数制定一个默认的值。当我们调用函数时,默认参数是非必须传递的。

默认参数用途:安装默认软件(def test(x,soft=True))

传递一下默认的值(定义mysql的默认端口号:def count(host,port=3306))

三、参数组

之前我们传参数,都是传一个固定参数,不能多也不能少,但是如果说我们需要非固定参数怎么办呢?好吧,于是就衍生出了,以下两种传参方式:非固定位置参数传参(*args)

非固定关键字传参(**kwargs)

下面我们就来说说这两种方式传参:

1、非固定位置参数传参

①功能:接收N个位置参数,转换成元组的形式。

②定义,代码如下:

这边不禁的有个疑问,你这是传入的都是N个位置参数,那我要传入一整个列表咋办,我要完全的获取这个列表的值。

③传入列表

④位置参数和非固定位置参数

从上面看出,第1个参数,被当做位置参数,剩下的被当做非固定位置参数。

⑤关键字和非固定位置参数

很显然报错了,因为x=1是关键字参数,*args是位置参数,而关键字参数不能再位置参数前面的,所以报错。

2、非固定关键字传参

①功能:把N个关键字参数,转换成字典形式

②定义,代码如下:

③传入字典

然而,有些小伙伴说,我就不信,难道不加*,就会报错,那为啥非固定位置参数不加,为啥就不报错呐?下面我们就用事实说话,代码如下:

因为传入的字典被当做位置参数,所以被报类型错误,所以小伙伴们千万要记住:传字典,加**

④配合位置参数使用

⑤位置参数、关键字和非固定关键字参数

提示:参数组一定要往最后放

注:就是说,如果遇到一个关键字传参和非固定关键字传参,前后放的位置是不影响传参的,但是我们一般还是按顺序来。

⑥位置参数、关键字参数、非固定位置参数和非固定关键字参数

那么问题来了,上面的age传参传的是位置参数,那我能不能传关键字参数呐?现在我们就来看看,代码如下:

看来是不可以的,为什么?因为age=19是关键字参数,而后面的args是非固定位置参数,说白了不管args传入几个字,它的本质都是位置参数,上面我们提到关键字参数是不能再位置参数的前面,所以报错了。

看来上面的情况是不可以的,那能不能非固定关键字参数在非固定位置参数前面呢?来,我们带着疑问一起来试一下。代码如下:

我擦咧,也是不可以的,经我仔细研究发现,非固定关键字参数,本质也是关键字参数,是不能放在非固定位置参数的前面的。

四、总结参数分为位置参数、关键字参数、默认参数、非固定位置参数和非固定关键字参数

位置参数之前传参,位置是不能调换的,多一个或者少一个参数都是不可以的。

关键字参数是不能放在位置参数前面的。

函数传参的位置一次是,位置参数,默认参数、非固定位置参数、非固定关键字参数(def test(name,age=18,args,*kwargs))

关键字传参,可以不用考虑位置的前后问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值