在编写JavaScript代码的过程中,我对于解构赋值甚是喜爱:
let[x=1,y=x]=[2];
let{foo,bar}={foo:'aaa',bar:'bbb'};
配合上匿名函数,能直接写出这样的代码:
const func1 = ({a, b}) => a+b
const func2 = ([a, b]) => a+b
同样在Python中也有类似的语法,不过自由度稍弱,就是*args和**kwargs了。通常情况下,这两个语法出现在函数的形参中,用于接收不定长传参。事实上,它们还能做更多:
def z(a, b, c=None): ...
z(*[1, 2])
z(**{'a': 1, 'b': 2, 'c': 3})
正像上面所展示的,我们可以将这个语法应用到函数调用上。*[]是根据位置进行传参,当然,还有*(), *{}等等。**{}是根据形参名进行传参。
这两种方式的选择要看具体情况。