Python拆包的好处

内容

在最近的一期 realpython 中,我阅读到了这样一段代码:

# Why Python Is Great:
# Function argument unpacking
def myfunc(x, y, z):
    print(x, y, z)
tuple_vec = (1, , 1)
dict_vec = {'x': 1, 'y': , 'z': 1}
>>> myfunc(*tuple_vec)
1, , 1
>>> myfunc(**dict_vec)
1, , 1

之前因为:

  1. 这个东西不是很直观
  2. 这个可能造成参数混乱

而不是很在意这段代码。现在想来,真是很方便的一个东西:我们可以通过这个特性,轻松的拆解response.json这个dict,从而直接使用参数。

注意一点,如果一个函数的参数超过三个,说明你需要拆解这个函数,而不是被参数的数量搞得焦头烂额。

具体例子

这个方法可以方便很多事情,比如说,我可以这样来重新构建输出的变量,而不是一个个print

def add_parameters(params, **kwargs):
    """add kwargs to dict
    Args:
        params: the dict need to add
        kwargs: variable
    """
    params.update(kwargs)
params = {}
add_parameters(params,
                   x_train=x_train.shape,
                   y_train=y_train.shape,
                   x_test=x_test.shape,
                   y_test=y_test.shape)
pretty(params)