标签: kwargs

使用*args和**kwargs

所以我有这个概念的困难*args**kwargs.

到目前为止,我已经了解到:

  • *args =参数列表 - 作为位置参数
  • **kwargs = dictionary - 其键成为单独的关键字参数,值成为这些参数的值.

我不明白这会对哪些编程任务有所帮助.

也许:

我想输入列表和字典作为函数AND的参数同时作为通配符,所以我可以传递任何参数?

有一个简单的例子来说明如何*args**kwargs使用?

我发现的教程也使用了"*"和变量名.

*args**kwargs刚才占位符或者你使用完全相同*args,并**kwargs在代码中?

python args kwargs

1367
推荐指数
10
解决办法
84万
查看次数

**kwargs的目的和用途是什么?

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

我知道你可以objects.filter在桌子上做一个并传递一个**kwargs参数.  

我也可以这样做来指定时间增量timedelta(hours = time1)吗?

它究竟是如何工作的?这类是"解包"吗?喜欢a,b=1,2

python kwargs

746
推荐指数
9
解决办法
57万
查看次数

在Python中使用**kwargs的正确方法

**kwargs在默认值方面,在Python中使用的正确方法是什么?

kwargs返回字典,但设置默认值的最佳方法是什么,还是有一个?我应该只是作为字典访问它吗?使用get函数?

class ExampleClass:
    def __init__(self, **kwargs):
        self.val = kwargs['val']
        self.val2 = kwargs.get('val2')
Run Code Online (Sandbox Code Playgroud)

一个简单的问题,但我找不到好的资源.人们在我看过的代码中采用不同的方式,并且很难知道要使用什么.

python kwargs

415
推荐指数
11
解决办法
35万
查看次数

将Python字典转换为kwargs?

我想使用类继承为sunburnt(solr接口)构建一个查询,从而将键 - 值对添加到一起.sunburnt接口采用关键字参数.如何将dict ({'type':'Event'})转换为关键字参数(type='Event')

python dictionary kwargs

279
推荐指数
3
解决办法
11万
查看次数

如何检查**kwargs中的密钥是否存在?

Python 3.2.3.这里列出了一些有关常规变量的想法,但似乎**kwargs按照不同的规则进行播放...所以为什么这不起作用?如何查看**kwargs中的密钥是否存在?

if kwargs['errormessage']:
    print("It exists")
Run Code Online (Sandbox Code Playgroud)

我也认为这应该有效,但事实并非如此 -

if errormessage in kwargs:
    print("yeah it's here")
Run Code Online (Sandbox Code Playgroud)

我猜是因为kwargs是可迭代的?我是否必须遍历它才能检查特定键是否存在?

python dictionary kwargs python-3.x

91
推荐指数
4
解决办法
7万
查看次数

通过一个kwargs列表?

我可以将kwargs列表传递给简洁方法吗?这就是我正在尝试做的事情:

def method(**kwargs):
    #do something

keywords = (keyword1 = 'foo', keyword2 = 'bar')
method(keywords)
Run Code Online (Sandbox Code Playgroud)

python kwargs

86
推荐指数
3
解决办法
6万
查看次数

为什么在python中使用**kwargs?使用命名参数有哪些现实世界的优势?

我来自静态语言的背景.有人可以解释(理想情况下通过示例)使用**kwargs而不是命名参数的真实世界优势吗?

对我来说,它似乎只是使函数调用更加模糊.谢谢.

python kwargs

64
推荐指数
5
解决办法
2万
查看次数

使用*args,**kwargs和optional/default参数调用Python函数

在python中,我可以定义一个函数如下:

def func(kw1=None,kw2=None,**kwargs):
   ...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以调用func作为:

func(kw1=3,kw2=4,who_knows_if_this_will_be_used=7,more_kwargs=Ellipsis)
Run Code Online (Sandbox Code Playgroud)

我也可以定义一个函数:

def func(arg1,arg2,*args):
    ...
Run Code Online (Sandbox Code Playgroud)

可称为

func(3,4,additional,arguments,go,here,Ellipsis)
Run Code Online (Sandbox Code Playgroud)

最后,我可以将两种形式结合起来

def func(arg1,arg2,*args,**kwargs):
    ...
Run Code Online (Sandbox Code Playgroud)

但是,什么是行不通的是:

func(arg1,arg2,*args,kw1=None,kw2=None,**kwargs):  #SYNTAX ERROR (in python 2 only,  apparently this works in python 3)
    ...
Run Code Online (Sandbox Code Playgroud)

我最初的想法是,这可能是因为一个功能

def func(arg1,arg2,*args,kw1=None):
    ...
Run Code Online (Sandbox Code Playgroud)

可以称为

func(1,2,3) #kw1 will be assigned 3
Run Code Online (Sandbox Code Playgroud)

因此,这将引入一些含糊不清的关于3是否应该打包成args或kwargs.但是,使用python 3,可以指定仅关键字参数:

def func(a,b,*,kw=None):  #can be called as func(1,2), func(1,2,kw=3), but NOT func(1,2,3)
   ...
Run Code Online (Sandbox Code Playgroud)

有了这个,似乎没有语法模糊:

def func(a,b,*args,*,kw1=None,**kwargs):
    ...
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会导致语法错误(使用Python3.2测试).这是否有理由让我失踪?并且,有没有办法获得我上面描述的行为(使用默认参数*args) - 我知道我可以通过操作函数内部的kwargs字典来模拟该行为.

python syntax kwargs python-3.x

59
推荐指数
3
解决办法
3万
查看次数

在Python threading.Thread中将关键字参数传递给目标函数

我想在创建Thread对象时将命名参数传递给目标函数.

以下是我写的代码:

import threading

def f(x=None, y=None):
    print x,y

t = threading.Thread(target=f, args=(x=1,y=2,))
t.start()
Run Code Online (Sandbox Code Playgroud)

我在第6行得到了"x = 1"的语法错误.我想知道如何将关键字参数传递给目标函数.

python multithreading kwargs python-multithreading python-2.7

34
推荐指数
2
解决办法
4万
查看次数

在**kwargs中使用OrderedDict

是否可以将OrderedDict实例传递给使用**kwargs语法并保留排序的函数?

我想做的是:

def I_crave_order(**kwargs):
    for k, v in kwargs.items():
        print k, v

example = OrderedDict([('first', 1), ('second', 2), ('third', -1)])

I_crave_order(**example)
>> first 1
>> second 2
>> third -1
Run Code Online (Sandbox Code Playgroud)

但实际结果是:

>> second 2
>> third -1
>> first 1
Run Code Online (Sandbox Code Playgroud)

即,典型的随机字典排序.

我有其他用途明确设置顺序是好的,所以我想保留**kwargs而不是仅仅将OrderedDict作为常规参数传递

python parameter-passing kwargs

29
推荐指数
2
解决办法
8132
查看次数