Python 序列类型以及函数参数类型

本文说说自己对 Python 序列类型和函数参数类型的理解。

注意:内容基于 Python 3.6

序列类型(Sequence Type)

我们先来看个例子

上面的操作叫做「多重赋值」,其实,只要是「序列类型」的,都可以有这种操作。

序列类型包括这几种:列表(list)、元组(tuple)、range、str、binary sequence type

所以,我们看到下面的用法就不奇怪了

这个也好理解

当然,「序列类型」还有很多类似的操作

函数参数类型

共有三种:位置参数(Positional Arguments)、可变参数(Arbitrary Arguments)、关键字参数(Keyword Arguments)。

先有个整体的认识。函数定义如下

调用

输出如下

其中,name 为「位置参数」, 为「可变参数」, 为「关键字参数」。

「位置参数」是指函数调用时根据参数位置进行赋值

「可变参数」,个人理解就是用来解决不确定参数的问题的

args 是一个元组,函数调用时,除掉「位置参数」用掉的参数,剩下的都会按顺序放到这个元组。

「关键字参数」是指以 形式定义的参数

extra_info 是一个字典,由与前面参数对应不上的「关键字参数」组成。

相信很多朋友看到这,都有点疑惑,这「位置参数」和「关键字参数」怎么区分呢?我的理解是不用区分。理由如下

「位置参数」和「关键字参数」是一个相对的概念,不用去死磕。有的把三个参数都当作「位置参数」,有的把三个参数都当作「关键字参数」,有的把第一个当作「位置参数」,后面两个当作「关键字参数」。理解上其实都没问题,我们只要明白在各种情况下如何使用就好。(不过我个人倾向于最后一种理解)

另外需要注意下相关的两个操作

最后来个总结,放出本小节的第一个函数定义

当「位置参数」、「可变参数」和「关键字参数」同时存在时,「可变参数」在「关键字参数」之前,「位置参数」在最前。「位置参数」和「关键字参数」没必要强行去区分,有自己的合理理解即可。还有就是理解函数调用时, 可以用于解包「列表」(或其它「序列类型」), 可以用于解包「字典」。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180831G06M7N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动