Python语义 - for循环声明中的多个参数

Aid*_*wen 2 python

很抱歉问一个愚蠢的问题,但有人可以告诉我以下是什么意思

for ctype, (codename, name) in searched_perms:
Run Code Online (Sandbox Code Playgroud)

我不明白括号里会发生什么.for ctype in serached_perms:会有意义的.

我意识到答案是在某个地方的python文档中,但由于我不知道我在寻找什么,所以很难找到解释.

Fre*_*Foo 6

这实际上相当于

for x in search_perms:
     ctype, y = x
     codename, name = y
Run Code Online (Sandbox Code Playgroud)

要么

for x in search_perms:
    ctype = x[0]
    codename = x[1][0]
    name = x[1][1]
Run Code Online (Sandbox Code Playgroud)

即,它从search_perms成对中解包项目,然后将每对中的第二项解包为一对.

例:

>>> d = {"ham": "yes", "spam": "no", "eggs": "please"}
>>> for k, v in d.iteritems():
...     print("%s? %s" % (k, v))
...     
eggs? please
ham? yes
spam? no
>>> for i, (k, v) in enumerate(d.iteritems()):
...     print("question %d: %s? %s" % (i, k, v))
...     
question 0: eggs? please
question 1: ham? yes
question 2: spam? no
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为enumerate(d.iteritems())生成对,其中每个第二个元素又是一对:

>>> list(enumerate(d.iteritems()))
[(0, ('eggs', 'please')), (1, ('ham', 'yes')), (2, ('spam', 'no'))]
Run Code Online (Sandbox Code Playgroud)