我今天开始学习python并发现了这个非常好的代码可视化工具pythontutor.com,问题是我还没有完全了解示例代码的一些语法。
def listSum(numbers):
if not numbers:
return 0
else:
(f, rest) = numbers
return f + listSum(rest)
myList = (1, (2, (3, None)))
total = listSum(myList)
(f, rest) = numbers
的含义是什么?
答案 0 :(得分:3)
元组 解包。
以这种方式使用时,元组中需要有2个项目。或多或少会导致异常,如下所示。
>>> numbers = (1, 2, 3, 4, 5)
>>> (f, rest) = numbers
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> numbers = (1, 2)
>>> (f, rest) = numbers
>>> print f
1
>>> print rest
2
>>> numbers = (1)
>>> (f, rest) = numbers
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> numbers = (1,)
>>> (f, rest) = numbers
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
请注意,(1)
和(1, )
在语法上是不同的,只有后者是一个元组。
有关详细信息,请参阅Tuples and Sequences上的 Python文档。
答案 1 :(得分:3)
(f, rest) = numbers
解压缩元组。也就是说,它将两个值存储在数字中并分别存储在f和rest中。请注意,解包的变量数必须与元组中的值数相同,否则将抛出异常。
答案 2 :(得分:0)
Tupple是一种数据结构,您可以在其中以一个名称存储多个项目。
假设我们有一个带有两个项目的tupple(t)。
然后t [0] = first_item并且t [1] = sencond_item
访问tupple项目的另一种方法是:
(f,休息)=数字
在此语法中,数字(tupple)必须只有2个项目,否则它是一个例外
f =数字[0] rest = numbers [1]