龙空技术网

一日一技:再说说python中*args and **kwargs的用法(01)

Python编程之美 243

前言:

现在姐妹们对“pythonkw”大致比较关注,我们都想要了解一些“pythonkw”的相关知识。那么小编同时在网摘上搜集了一些对于“pythonkw””的相关资讯,希望同学们能喜欢,大家快快来了解一下吧!

1. * args和** kwargs

大多数学习python的学习者都很难指出* args和** kwargs的变 kwargs的变量。 那么他们到底是什么? 其实,我们平时见到的* args和 **kwargs默认惯例,所以我们也可以写成* var和** vars 。

1.1 * args的用法

* args和** kwargs kwargs通常用于函数定义中。 * arg kwargs kwargs通常用于函数定义中。 * args允许我们将可变数量的参数传递给函数。 变量在这里的含义是,我们事先不知道用户到底向函数传递多少个参数,那么在这种情况下,我们将使用这两个关键字(* args和传递给函数。

以下是一个示例,可帮我们理解:

def   test_var_args(f_arg, *argv):    print("first normal arg:", f_arg)    for arg in argv:        print("another arg through *argv:", arg)test_var_args('yasoob', 'python', 'eggs', 'test')

输出:

first normal arg: yasoobanother arg through *argv: pythonanother arg through *argv: eggsanother arg through *argv: test

1.2 ** kwargs的用法

** kwargs允许我们将关键字可变参数长度传递给函数。 如果要处理函数中的命名参数,那么我们可以使用**kwargs。

以下是一个示例,可帮我们理解:

def greet_me(**kwargs):    for key, value in kwargs.items():        print("{0} = {1}".format(key, value))>>> greet_me(name="yasoob")name = yasoob

因此,我们可以看到我们是如何处理函数中的关键字参数列表。 这只是** kwargs的皮毛,我们还可以看到它的其他用处。 现在,让我们谈谈如何使用* args和** kwargs调用带有参数列表或字典的函数。

1.3。 使用* args和** kwargs调用函数

因此,在这里我们将看到如何使用* args和** kwargs调用函数。 我们做个小测试,如下:

def test_args_kwargs(arg1, arg2, arg3):    print("arg1:", arg1)    print("arg2:", arg2)    print("arg3:", arg3)

现在,我们可以使用* args或** kwargs将参数传递给函数,方法如下:

>>> args = ("two", 3, 5)>>> test_args_kwargs(*args)arg1: twoarg2: 3arg3: 5>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}>>> test_args_kwargs(**kwargs)arg1: 5arg2: twoarg3: 3

使用* args ** kwargs和形式参数的顺序

因此,如果要在函数中使用所有这三个函数,则顺序为:

some_func(fargs, *args, **kwargs) #想一想,如果顺序乱了,会发生什么?

1.4 那么,我们在什么情形下才去使用它们呢?

这具体取决于我们的工作要求。 最常见的用法是用在函数装饰器上。 另外,它也可以用于代码调试,那么就意味着在运行时修改一些代码。 现在,我们考虑有一个带有名为get_info的函数的类,该类调用API并返回响应数据。 如果我们要测试它,可以用一些测试数据代替API调用。 例如:

import someclassdef get_info(self, *args):    return "Test data"someclass.get_info = get_info

欢迎大家在下方留言,讨论

谢谢关注!

标签: #pythonkw