为什么这张图片的结果为2?但是我觉得结果应该是1,我也不知道为什么
这是个好问题。
其实这不是嵌套元组的bug,而是小括号的锅。
在函数调用的时候,python默认会把小括号识别成函数调用的一部分,即使重复书写,也会认为是一个函数,所以其实len(())和len()的作用是一样的。
此外,即使没有函数,使用小括号把任何元素括起来,python默认也不会把它看成元组,除非里面有逗号。
所以python规定,如果要创建只有一个元素的元组,需要在那唯一的元素后面加上一个逗号,好让程序知道,这是个元组。
如果你在这个例子里使用len(((1,2),)),结果就是1了。
外面的括号跟没套一样,如果是一个元素的元组,应该是(元素,)而不是(元素),想让输出为1,可以len((1,2),)
这里涉及一个基本问题,就是元组如何定义
当元组只有一个元素时,必须这样定义:(a,)
注意,必须加逗号
否则解释器会把括号当做数学运算符来处理
比如下面的代码:
(1+2),那么很显然结果是3,括号是数学运算符
如果你想定义成元组,必须这样((1+2),)才能让解释器知道你是想定义元组,而不是要给表达式提升优先级
len表达的是长度,里面有两个数所以长度为2