题主有一定的c语言基础,在这里以两者对比的形式做一些学习笔记
#前言
题主发现大多数文章都是把元组和列表一起讨论,确实在python的数据组合类型中元组和列表比较相似(有有序性,可重复),所以我准备把这些东西,以及一些基础运算(定义、修改增删)放在列表那里去聊(那将是一篇长文……等题主考完试再来写)
这篇文章我想聚焦一个问题:为啥要有元组这个东西?
##数据组合
在编程语言的使用中不可避免的会要求属性相似的数据成为数据组合,来进行更方便的计算,与c语言里的数组和结构体不同的是,python中的元组有个最大的特点是不可更改,其实它更多时候不是用来把数据以组的形式来进行运算,而是把多个变量打包成所谓”tuple“型变量来进行多个变量的传递。
#语法
在python里,元组其实很常见,只要若干个变量使用逗号分隔就是元组,只是省略了括号而已。
a,b = input()
其实a,b也是元组。因此元组的”组合性“并不强,并不强调其元素间的联系,只是作为同时传递的变量来进行打包传递
##从变量交换来看看它有什么作用
如果我们一次只能进行一个变量的赋值
如果我们有a = 1,b = 2
我们想交换它们,必须要使用一个变量来暂存。
t = a,a = b, b = t这样
但是,要是我们把a,b/b,a打包起来成为一个大变量(a,b)/(b,a)
(a,b) = (b,a)
一次我们只赋值了一个大变量,这就显得合理了。这就是多个变量的”打包“
##函数的单一出口
在c语言中强调了函数的单一出口的要求,也就是调用函数是只能return一个结果,这可以从数学的角度理解:多元函数可以有多个自变量但是只能用一个因变量。
元组很好的偷了一个鸡:
只能有一个因变量,但是它可以是元组变量。
def jiajian(a,b):
c = a+b
d = a-b
return c,d
依然是单一出口,但是这个出口是个元组。
#小结
元组像是钻了一个规则的漏洞,只能对一个变量进行传递很不方便,我就打包成一个再传递,这大大提高便利性。