Python中*args和**kwargs是什么【面试题详解】

今天爱分享给大家带来Python中*args和**kwargs是什么【面试题详解】,希望能够帮助到大家。
真正的语法是*和**,*args和**kwargs这两个名字只是约定俗成的,但并没有硬性的规定一定要使用它们。

当你不确定有多少个参数会被传进你的函数时,你可能会使用*args,也就是说它允许你给你的函数传递任意数量的参数,举个例子:


>>> def print_everything(*args):
        for count, thing in enumerate(args):
…           print ‘{0}. {1}’.format(count, thing)
…
>>> print_everthing(‘apple’, ‘banana’, ‘cabbage’)
0. apple
1. banana
2. cabbage

类似的,**kwargs允许你处理那些你没有预先定义好的已命名参数


>>> def table_everything(*kwargs):
        for name, value in kwargs.items():
…           print ‘{0} = {1}’.format(name, value)
…
>>> table_everthing(apple = ‘fruit’, cabbage = ‘vegetable’)
cabbage = vegetable
apple = fruit

你一样可以使用这些命名参数。明确的参数会优先获得值,剩下的都会传递给*args和**kwargs,命名参数排在参数列表前面,举个例子:


def table_things(titlestring, **kwargs)

你可以同时使用它们,但是*args必须出现在**kwargs之前。

调用一个函数时也可以用*和**语法,举个例子:



正如你看到的,它得到了一个list或者tuple,并解包这个list。通过这种方法,它将这些元素和函数中的参数匹配。当然,你可以同时在函数的定义和调用时使用*。

人已赞赏
Python

Python构造一个基本的Python迭代器【面试题详解】

2020-12-28 16:02:52

Python

为什么在Python的函数中,代码运行速度更快【面试题详解】

2020-12-28 16:06:00

'); })();