在Python语言中,我编写了这个函数来自学**kwargs
在Python语言中的工作原理:
def fxn(a1, **kwargs):
print a1
for k in kwargs:
print k, " : ", kwargs[k]
然后,我使用以下命令调用此函数
fxn(3, a2=2, a3=3, a4=4)
下面是我的Python解释器打印的输出:
3
a3 : 3
a2 : 2
a4 : 4
为什么for循环先打印a3的值,然后再打印a2的值,即使我先将a2输入到函数中?
发布于 2012-01-23 19:43:58
kwargs
是一种字典。字典是无序的-简单地说,顺序是未指定的,是一个实现细节。在幕后偷看会发现,根据项目的哈希值、插入顺序等,顺序会有很大的不同,所以你最好不要依赖任何相关的东西。
发布于 2012-01-23 19:44:26
这是一本字典。而且,正如文档中提到的,字典没有顺序(来自http://docs.python.org/tutorial/datastructures.html#dictionaries):
最好将字典视为键:值对的无序集合,要求键是唯一的(在一个字典内)。
但是你可以让它按的顺序处理,就像这样:
使用sorted()
的
def fxn( a1,**kwargs):打印排序(Kwargs)中k的a1:#请注意"kwargs“替换为"sorted(kwargs)”print k,“:",kwargsk
OrderedDict
类型(您可以将OrderedDict
对象作为包含所有键值对的参数传递):从集合导入OrderedDict def fxn( a1,ordkwargs):在ordkwargs中打印k的a1: print k,“:",ordkwargsk fxn(3,OrderedDict(‘a2’,2),('a3',3),(‘a4’,4)
发布于 2017-01-13 11:49:54
最后在3.6 release中引入了这一点:dict
现在是有序的,因此关键字参数顺序保持不变。
Python 3.6.0 (default, Jan 13 2017, 13:27:48)
>>> def print_args(**kwargs):
... print(kwargs.keys())
...
>>> print_args(first=1, second=2, third=3)
dict_keys(['first', 'second', 'third'])
https://stackoverflow.com/questions/8977594
复制相似问题