fangshenying 发表于 2016-4-1 14:14:59

请问*args和**kwargs

请问*args和**kwargs怎么用?

hushubai 发表于 2016-4-1 22:06:35

围观学习

ltyandy 发表于 2016-9-21 13:37:08

围观

人zai旅途 发表于 2016-9-22 00:07:28

format(...)
    S.format(*args, **kwargs) -> str
    Return a formatted version of S, using substitutions from args and kwargs.
    The substitutions are identified by braces ('{' and '}').
*args, **kwargs表示format(...)里面的内容,这个函数的意思是用S里面的格式,去格式化format后面(...)里面的元素并提取出来,具体哪个元素,通过{位置参数}来确定。比如:
>>> '{0} love {1}.{2}'.format('I','FishC','com')                  
'I love FishC.com'
这个例子中:
(*args, **kwargs)就是 ('I','FishC','com')   ;
{0} 对应 ‘I’

不二如是 发表于 2023-12-4 15:43:05

在Python中,*args 和 **kwargs 是两种用于函数定义中的参数,它们允许函数接受不确定数量的参数。*args 用于处理非关键字参数(非命名参数),而 **kwargs 用于处理关键字参数(命名参数)。下面是它们各自的使用方法和一些示例。

使用 *args:*args 允许函数接收任意数量的非关键字参数。

它在函数内部作为元组处理。

通常用于当你不确定会传递给函数多少个参数时。
示例:

def function_with_args(*args):
    for arg in args:
      print(arg)

function_with_args(1, 2, 3, 'a', 'b')
在这个例子中,function_with_args 可以接收任意数量的参数,args 将这些参数作为一个元组处理。

使用 **kwargs:**kwargs 允许函数接收任意数量的关键字参数。

它在函数内部作为字典处理。

这对于当你不知道将要接收多少个带有名称的参数时非常有用。

示例:

def function_with_kwargs(**kwargs):
    for key, value in kwargs.items():
      print(f"{key}: {value}")

function_with_kwargs(a=1, b=2, c='hello', d='world')
在这个例子中,function_with_kwargs 可以接收任意数量的关键字参数,kwargs 将这些参数作为一个字典处理。

同时使用 *args 和 **kwargs:你可以在同一个函数中同时使用 *args 和 **kwargs 来接收任意数量的非关键字和关键字参数。

示例:

def function_with_both(*args, **kwargs):
    for arg in args:
      print(arg)
    for key, value in kwargs.items():
      print(f"{key}: {value}")

function_with_both(1, 2, 'a', b=3, c=4)
在这个例子中,前三个参数作为非关键字参数通过 args 处理,而接下来的两个参数作为关键字参数通过 kwargs 处理。

这种方式在编写灵活性更高的函数时非常有用,尤其是在不确定会接收到多少个参数,或者参数的具体类型时。
页: [1]
查看完整版本: 请问*args和**kwargs