想象一下以下功能:
def getMinAndMax(numbers):
return min(numbers), max(numbers)
如果我这样做会怎么样?
num = getMinAndMax([1,2,3,4,5])
num
会假设元组中第一项的值min
,还是会发生其他事情?我知道我可以尝试一下,但我在这里寻找一些定义的Python行为。
答案 0 :(得分:2)
num
将是一个元组。在您的示例中,num
的值将等于(1,5)
。 Python默认不检查类型,因此您可以安全地将任何类型的值分配给任何变量。
答案 1 :(得分:2)
您的函数返回两元素元组min([1, 2, 3, 4, 5]), max([1, 2, 3, 4, 5])
,其值为1, 5
。声明
num = getMinAndMax([1,2,3,4,5])
会将名称num
绑定到元组(1, 2)
,您可以访问num[0]
和num[1]
各个值。但是,Python确实允许您使用通常称为解包分配的内容,如下所示:
nmin, nmax = getMinAndMax([1, 2, 3, 4, 5])
将每个名称绑定到右侧元组的后续元素,并允许您在不编制索引的情况下使用这些值。如果你需要一个结果元组,你的公式最简单,当然(nmin, nmax)
表达式将从第二个表达式重新创建它。