Python中参数传递的一些理解。 大佬勿喷
参数类型。
形参和实参
实参是实际参数,而形参是形式参数,例如
1 | def func(a,b,c): # 这里的a,b,c 就是形式参数, |
参数的分类。
位置参数
1 | def info(name,age,gender): |
运行结果:
关键字参数 +默认值参数
- 关键字参数:
1 | def func(a,b,c): |
结果:
关键字传参可以不用管参数的位置,但是需要给参数一定的值。
- 默认值传参。
在现实生活中,我们需要录入很多重复的信息的时候,可以给定一个默认值,比如一个班级的学生,60个男生,5个女生的话,可以默认设置为男性。
1 | def info2(name,age,gender='woman'): |
运行结果:
参数对比
结果对比:
info函数中gender是没有给定默认值的,所以传参的时候需要给定值
动态参数
位置参数
在运用过程中,我们可能需要传递的参数是不固定的,有时候参数多,有时候少,那么下面这个就可以解决这个问题。
- *args
* args 表示可以接受所有传递进来的位置参数,同时也还可以接受列表和字典类型的传参。
例:
这里我们可以看到,我们传入进去的参数,都被以元组类型打印出来了,但是我们直接传参列表和字典,列表和字典都被当做一个参数传递,打印出来的是元组里面的列表和元组里面的字典,而如果我们传递*list和*dict的话 那么传递列表的值就是单独的,而且打印的时候是一个元组。而字典也会被单独传递键名。
关键字参数
- **kwargs参数传递
这里宇*不同的是,**kwargs的参数传递,只能关键字类型的和字典类型的传参,其他的会报错。
**kwargs 只有在有关键字参数的时候,才会有字典的值
混合参数的搭配使用
通过上面的了解,我们有时候需要给定一些固定的位置参数,但是又需要传递未知长度的参数,甚至最后可能还需要给关键字参数,那么我们可以将所学的几种参数搭配使用。
那么参数的使用顺序是
位置参数>*args>关键字参数>**kwargs
这里解释以下为什么是这个顺序。
这里的c 默认情况下是为你好的,但是我们打印的时候 c变为3了,我们想要的默认值就没法生效了,所以我们想要达到想要的结果,就只能修改传递位置参数的顺序,如图,如果上面第一个传参是*args参数的话,那么我们输入的前面10个参数,全部都会被它所接收,而**kwargs 只有在有关键字参数的时候,才会有字典的值 那么它为空,此时a和b两个参数,就已经没有参数了,这里显然是行不通的。
但是打印的时候,关键字传参可以先打印。
接受任意类型的参数。
这个是一个比较特殊的
如图所示,结果也进行了备注。
- 本文标题:Python中args kwargs参数的一些使用方法
- 创建时间:2023-03-01 00:00:00
- 本文链接:2023/03/01/Python中args kwargs参数的一些使用方法/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!