这是一小部分代码
import networkx as nx
G=nx.MultiDiGraph()
...
G.add_edge(white, black, **game)
(游戏是字典)最后一行**的作用是什么
这是一小部分代码
import networkx as nx
G=nx.MultiDiGraph()
...
G.add_edge(white, black, **game)
(游戏是字典)最后一行**的作用是什么
**
是将映射类型(例如 a )解压缩dict
为关键字参数的运算符。
考虑:
def foo(bar=1):
print bar
d = {'bar':2}
foo(**d)
在本例中,2
将被打印。另一方面,您还可以在**kwargs
类型变量中吸收所有未知的关键字参数:
def foo(a=1,b=2,**kwargs):
print kwargs
foo(a=1,b=2,c=3)
当然,您也可以组合这些形式:
def foo(a=1,b=2,**kwargs):
print b
print kwargs
d = {'b':3, 'c':4}
foo(**d)
该函数作为关键字参数add_edge
传入字典。例如,以下两个是等价的:game
game = {'weight': 5, 'color': 'blue'}
G.add_edge(white, black, **game)
G.add_edge(white, black, weight=5, color='blue')
它扩展了一个字典,因此它的键对值用作命名参数。例如,考虑这个函数:
>>> def f(a, b, c):
... return a+b-c
...
我可以调用它以原始顺序传递它的参数:
>>> f(1,2,3)
0
但是,如果我将值赋予参数名称,我也可以切换它们:
>>> f(1,c=3,b=2)
0
当调用一个函数并传递一个以 开头的字典**
时,该字典的对将用作参数。所以,我可以在下面创建字典
>>> params = {'c':3, 'b':2}
...并将其传递给我的功能...
>>> f(1,**params)
0
...并会得到相同的结果。
这意味着参数基本上是一个字典。
它通常用作**kwargs
,含义,关键字参数。
例如,当您定义如下方法时:
def myMethod(first, *args, **kwargs):
....
这意味着第二个参数应该是一个集合(参数的“列表”),并且kwargs
应该是一个dict
.