x,y = getPos()vs.(x,y)= getPos()

hel*_*hod 5 python tuples

考虑这个函数getPos(),它返回一个元组.以下两项任务有什么区别?在某个地方,我看到了一个使用第一个任务的例子,但是当我尝试第二个任务时,我很惊讶它也有效.那么,真的有区别,或者Python只是弄清楚左手部分应该是一个元组?

def getPos():
  return (1, 1)

(x, y) = getPos() # First assignment
x, y   = getPos() # Second assignment
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 8

阅读有关元组的信息:

元组由逗号分隔的多个值组成(...)

因此,括号不会使元组成为元组.逗号做了.

只有在具有奇怪的嵌套结构时才需要括号:

x, (y, (w, z)), r
Run Code Online (Sandbox Code Playgroud)

  • 还要制作单个值元组:`(x,)` (2认同)
  • @fortran:实际上,你不需要括号,但我想这是一个好的做法,让它更清晰. (2认同)
  • 这是括号的常见用例:`for index,(x,y)枚举(points):`... (2认同)

Ski*_*ick 5

是的,它被称为元组解包:

"元组解包需要左边的变量列表与元组的长度具有相同的元素数." - Guido Van Rossum

"当你在=的左侧使用元组或列表时,Python将右侧的对象与左侧的目标配对,并从左到右分配它们." - Lutz和Ascher