`**kwargs`参数是从`formfield_for_manytomany`函数中来的,它用于将多对多关系中的字段转换为表单字段。

7 浏览
0 Comments

`**kwargs`参数是从`formfield_for_manytomany`函数中来的,它用于将多对多关系中的字段转换为表单字段。

这个问题在这里已经有了答案:

** (double star/asterisk) 和 * (star/asterisk) 在参数中都有什么作用?

**kwargs 在 Python 中有什么用途?

我知道你可以在表格上使用 objects.filter 并传递一个 **kwargs 参数。

我也可以使用它来指定时间差,例如 timedelta(hours = time1)

它是如何工作的?它被归类为“解包”吗?例如 a,b=1,2

admin 更改状态以发布 2023年5月21日
0
0 Comments

解压字典

** 解压字典。

This

func(a=1, b=2, c=3)

args = {'a': 1, 'b': 2, 'c':3}
func(**args)

相同。

如果要构建参数,这样很有用:

args = {'name': person.name}
if hasattr(person, "address"):
    args["address"] = person.address
func(**args)  # either expanded to func(name=person.name) or
              #                    func(name=person.name, address=person.address)


打包函数的参数

  • 对于 Python 3,使用 .items() 替代 .iteritems()

def setstyle(**styles):
    for key, value in styles.iteritems():      # styles is a regular dictionary
        setattr(someobject, key, value)

这样可以像这样使用函数:

setstyle(color="red", bold=False)


注意事项

  • kwargs 是关键字参数的变量名,可以使用其他变量名。重要的是它是一个字典,并且使用双星号操作符 ** 解压。
  • 其他可迭代对象使用单星号操作符 * 解压。
  • 为了避免混淆,最好按照公认的变量名 kwargsargs,分别用于字典和其他可迭代对象。

资源

0
0 Comments

你可以使用**kwargs让你的函数接收任意数量的关键字参数("kwargs"意味着"keyword arguments"):

>>> def print_keyword_args(**kwargs):
...     # kwargs is a dict of the keyword args passed to the function
...     for key, value in kwargs.iteritems():
...         print "%s = %s" % (key, value)
... 
>>> print_keyword_args(first_name="John", last_name="Doe")
first_name = John
last_name = Doe

当构建一个关键字参数的字典并将其传递给函数时,你也可以使用**kwargs语法来调用函数:

>>> kwargs = {'first_name': 'Bobby', 'last_name': 'Smith'}
>>> print_keyword_args(**kwargs)
first_name = Bobby
last_name = Smith

Python Tutorial中有很好的解释以及一些很好的例子。

Python 3更新

对于Python 3,不再使用iteritems(),而使用items()

0