Python中 *args 和 **kwargs 的含义?

简介: 公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!


公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!


小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。


废话不多说,开始今天的题目:


问:Python中 *args 和 **kwargs 的含义?

答:在python中,*args和**kwargs通常使用在函数定义里。*args 和 **kwargs 都允许你给函数传不定数量的参数,即使在定义函数的时候不知道调用者会传递几个参数。ps: *args和**kwargs只是一个大家都遵守的习惯,名字可以任意写的 。


1. *args例子

*args能够接收不定量的非关键字参数,会把位置参数转化为tuple(非键值对的参数组),例子如下面代码所示:

def func(*args):
    for i in args:
        print(i)
func(1,2,3,4)
运行结果:
1
2
3
4

2.**kwargs 例子

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了,它会把关键字参数转化为dict(键值对参数组),例子如下面代码所示:

def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(a=1,b=2,c=3,d=4)
运行结果:
a 1
b 2
c 3
d 4


下面演示个错误的案例,看到有个错误:"func() takes 0 positional arguments but 4 were given" ,“未定义位置型参数,却收到了4个参数。” 也就是说,kwargs需要的是带名称的参数,而args代表位置型参数(无名称参数)。从英语上来说,kwargs多出来的kw其实就是keyword的意思,表示这是“键值对”参数,就像字典那样 。这样解释,*args 和 **kwargs 两者的区别,大家掌握了吗?

def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(1,2,3,4)
运行结果:
Traceback (most recent call last):
  File "F:/pyworkspace/hello.py", line 4, in <module>
    func(1,2,3,4)
TypeError: func() takes 0 positional arguments but 4 were given

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

相关文章
|
2月前
|
开发者 Python
在Python中,什么时候不应该使用`*args`和`**kwargs`?
在Python中,什么时候不应该使用`*args`和`**kwargs`?
17 1
|
2月前
|
开发者 Python
在Python中,什么时候应该使用`*args`和`**kwargs`?
在Python中,什么时候应该使用`*args`和`**kwargs`?
25 1
|
2月前
|
Python
解释Python中的`*args`和`**kwargs`的用法。
解释Python中的`*args`和`**kwargs`的用法。
21 1
|
11月前
|
API Python
Python [**kwargs 的⽤法]
Python [**kwargs 的⽤法]
|
存储 Python
Python中函数参数传递方法*args, **kwargs,还有其他
本文将讨论Python的函数参数。我们将了解*args和**kwargs,/和*的都是什么,虽然这个问题是一个基本的python问题,但是在我们写代码时会经常遇到,比如timm中就大量使用了这样的参数传递方式。
255 0
Python的*args and **kwargs使用方法
Python的*args and **kwargs使用方法
|
Python
python __all__含义
当我们创建一个文件时 test1.py
75 0
|
Python
python中的*args与**kwargs的含义与作用
python中的*args与**kwargs的含义与作用
145 0
|
数据库管理 Python
【Python】*args 和 **kwargs的用法
一 简介 *args 和 **kwargs 主要用于函数定义。 当我们需要定义的函数的传入参数个数不确定时,可以使用*args 和 **kwargs 代替不确定的参数个数。
10122 1
|
Python
python *args 和**kwargs的用法
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。
1376 0