鱼C论坛

 找回密码
 立即注册
查看: 1574|回复: 3

[已解决]请问*args **kwargs这两个变量如何理解?谢谢

[复制链接]
发表于 2023-10-12 00:45:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def foo(*args, **kwargs):
    print 'args = ', args
    print 'kwargs = ', kwargs
    print '---------------------------------------'
Screenshot_2023-10-12-00-41-34-889_com.youdao.dict-edit.jpg

用有道翻译,两个单词的意思都是参数
那具体有什么区别啊,谢谢
最佳答案
2023-10-12 00:46:22
在Python中,*args和**kwargs是用来接收不定数量的参数的。它们的区别在于:

*args用于接收不定数量的位置参数,它将传入的参数打包成一个元组(tuple)。

**kwargs用于接收不定数量的关键字参数,它将传入的参数打包成一个字典(dict)。

例如,我们定义了一个函数:
def foo(*args, **kwargs):
    print('args = ', args)
    print('kwargs = ', kwargs)

当我们调用这个函数时,可以传入任意数量的位置参数和关键字参数:
foo(1, 2, 3, a=4, b=5)

输出结果为:
args =  (1, 2, 3)
kwargs =  {'a': 4, 'b': 5}

可以看到,位置参数被打包成了一个元组,关键字参数被打包成了一个字典。我们可以在函数中通过*args和**kwargs来获取这些参数并进行处理。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-12 00:46:22 | 显示全部楼层    本楼为最佳答案   
在Python中,*args和**kwargs是用来接收不定数量的参数的。它们的区别在于:

*args用于接收不定数量的位置参数,它将传入的参数打包成一个元组(tuple)。

**kwargs用于接收不定数量的关键字参数,它将传入的参数打包成一个字典(dict)。

例如,我们定义了一个函数:
def foo(*args, **kwargs):
    print('args = ', args)
    print('kwargs = ', kwargs)

当我们调用这个函数时,可以传入任意数量的位置参数和关键字参数:
foo(1, 2, 3, a=4, b=5)

输出结果为:
args =  (1, 2, 3)
kwargs =  {'a': 4, 'b': 5}

可以看到,位置参数被打包成了一个元组,关键字参数被打包成了一个字典。我们可以在函数中通过*args和**kwargs来获取这些参数并进行处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 00:46:59 | 显示全部楼层
在Python中,*args和[b]kwargs是两种特殊的参数,它们允许函数接收任意数量的参数。这两个参数的名称并不是固定的,*argskwargs[/b]只是约定俗成的命名方式。关键在于前面的星号(*)和双星号(**)。

· *args用于将非关键字参数传递给函数。这意味着你可以在函数调用时传递任意数量的参数,这些参数在函数内部将被视为一个元组。

· **kwargs允许你将不定长度的关键字参数传递给函数。你可以在函数调用时传递任意数量的关键字参数,这些关键字参数在函数内部将被视为一个字典。

这是一个例子:
def foo(*args, **kwargs):
    print('args = ', args)
    print('kwargs = ', kwargs)
    print('---------------------------------------')

foo(1, 2, 3, a=4, b=5, c=6)

输出将是:
args =  (1, 2, 3)
kwargs =  {'a': 4, 'b': 5, 'c': 6}
·--------------------------------------

在这个例子中,非关键字参数1, 2, 3被*args捕获并转化为一个元组,而关键字参数a=4, b=5, c=6被**kwargs捕获并转化为一个字典。

这两个特殊参数的主要用途是允许函数接收任意数量的参数,这在你不确定将要传递给函数多少个参数,或者参数的类型可能会改变的情况下非常有用。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 00:47:12 | 显示全部楼层
*args**kwargs是Python中的特殊参数。它们允许函数接受不定数量的参数和关键字参数。

- *args用于传递不定数量的非关键字参数。
- **kwargs用于传递不定数量的关键字参数。

具体来说,当函数定义中包含*args时,这个参数将会接受任意数量的非关键字参数,并将它们作为一个元组传递给函数。而当函数定义中包含**kwargs时,这个参数将会接受任意数量的关键字参数,并将它们作为一个字典传递给函数。

下面是一个示例代码:
def foo(*args, **kwargs):    print('args:', args)    print('kwargs:', kwargs)foo(1, 2, 3, a=4, b=5)
在这个示例中,我们定义了一个名为foo的函数,并声明了两个特殊参数*args**kwargs。然后,我们调用这个函数,并传递了一些参数。

在函数内部,我们将参数argskwargs打印出来以便于查看。当我们执行这个函数时,它会输出如下内容:

[/code]
args: (1, 2, 3)
kwargs: {'a': 4, 'b': 5}
[/code]

这表明,*args参数接收了非关键字参数1, 2, 3,并将它们作为一个元组(1, 2, 3)传递给了函数。而**kwargs参数接收了关键字参数a=4, b=5,并将它们作为一个字典{'a': 4, 'b': 5}传递给了函数。

总之,*args**kwargs是Python中非常有用的特殊参数,允许你定义能够处理不定数量参数和关键字参数的函数。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 10:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表