解释 python 中的 args 和 kwargs

发布于 2025-01-04 01:51:19 字数 3098 浏览 11 评论 0

嘿,大家好呀。我发现,大多数的 Python 新手程序员很难搞清楚 *args**kwargs 魔术变量。所以,它们是什么呢?首先,让我告诉你,写 *args 或者 **kwargs 并不是必须的。只有 * (星号)是必须的。你也可以写成 *var**vars 。写成 *args**kwargs 仅仅是一个惯例。所以,让我们先来看看 *args

*args 的使用

*args**kwargs 最常用于函数定义。 *args**kwargs 允许你传递数量不定的参数给一个函数。这里的变量的意思是,你事先不知道用户会传递多少个变量给你的函数,因此,在这种情况下,你使用这两个关键字。 *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: yasoob
another arg through *argv : python
another arg through *argv : eggs
another arg through *argv : test

我希望这解开了你的困惑。现在,让我们谈谈 **kwargs

**kwargs 的使用

**kwargs 运行你传递 关键字 可变长度参数给函数。如果你想要处理函数中的 命名参数 ,那么你应该使用 **kwargs 。下面是一个例子,以帮助理解它:

def greet_me(**kwargs):
    if kwargs is not None:
        for key, value in kwargs.iteritems():
            print "%s == %s" %(key,value)
 
>>> greet_me(name="yasoob")
name == yasoob

所以,你可以看到我们是如何在函数中处理一个关键字参数列表的。这仅仅是 **kwargs 的基础知识,而你可以看到它多有用。现在,让我们聊聊你可以如何使用 *args**kwargs ,利用一个参数列表或者参数字典来调用一个函数。

使用 *args**kwargs 来调用一个函数

所以在这里,我们会看到如何使用 *args**kwargs 来调用一个函数。试想,你有这么一个小函数:

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

现在,你可以使用 *args 或者 **kwargs 来传递参数给这个小函数。以下是如何做到这点:

# first with *args
>>> args = ("two", 3,5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5

# now with **kwargs:
>>> kwargs = {"arg3": 3, "arg2": "two","arg1":5}
>>> test_args_kwargs(**kwargs)
arg1: 5
arg2: two
arg3: 3

使用 *args**kwargs 以及普通参数的顺序

所以,如果你想要在函数中同时使用这三个,那么顺序是

some_func(fargs,*args,**kwargs)

我希望你明白了 *args**kwargs 的使用。如果你对其有任何疑问或困惑,那么请随意在下面留言。要进一步研究,我推荐官方的 关于定义函数的 python 文档 ,以及 stackoverflow 上的 *args**kwargs

原文: *args and **kwargs in python explained

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
28 人气
更多

推荐作者

梦途

文章 0 评论 0

蓝眼睛不忧郁

文章 0 评论 0

134fengkuang

文章 0 评论 0

yang18

文章 0 评论 0

属性

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文