0

Python奇技淫巧——Unpacking Argument Lists

在Python2.7的文档中,有介绍Unpacking Argument Lists的文档,unpacking arguments lists的字面意思看起来比较陌生,但是如果你看下面的代码就知道它是什么意思了

**d就是unpacking argument的一种方法,将字典d解包之后将对应的参数传给有名元组Point,需要注意的是,被解包的字典的key的名字一定要和namedtuple的field_names相对应,否则会报错。

言归正传,下面从文档中去解释Unpacking Argument Lists

在列表和元组中,如果我们需要将列表或元组的元素一一传入某个函数,但是我们又不想通过索引一一传入,那么就可以用*操作符,以range()为例

对于被传入参数的函数,如果被解包的列表或元组的元素的个数和对应的函数的参数个数对应不上,就会报错,如下所示

同样的,也可以使用**操作符对字典进行类似的解包操作,如下所示

说道这里,特别需要注意的是,***与C/C++指针没有关系,这两个在Python中可以执行对列表,元组与字典的解包操作。说道这里,再说说函数参数中的可变参数关键字参数

可变参数是在函数的参数中参数的个数是可变的,如下代码所示

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做

这种写法当然是可行的,问题是太繁琐,所以Python允许你在列表或元组前面加一个*操作符,把list或tuple的元素变成可变参数传进去

对于关键字参数,其实是在函数的参数中说明有不确定个数的key=value的这种类型的参数,正常我们可以这么定义

但是当你的默认参数不确定的时候,而且你不确定你的默认参数的命名的时候,你可以这么做

然后你可以这么使用

或者

内容大致介绍到这里,参考资料

goingmyway

我是一只野生程序猿,我关注机器学习,神经网络,深度学习,增强学习,人工智能,Python,C/C++,Linux

发表评论

电子邮件地址不会被公开。 必填项已用*标注