为什么`for t [1] in iterable`是有效的语法?

Seb*_*ien 4 python syntax

我的一个学生写了一个看起来像这样的代码(它完全没有达到他所期望的那样):

t = [1,2,3]
for t[1] in "abcd":
    print("hello")
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个,并且很确定它不会编译,但它确实正在修改 t[1](在循环之后t[1]设置d).

允许这种语法有什么意义?有没有用例?对我来说,唯一"可接受的"语法应该是:

for <variable_name> in <iterable>:
     ...
Run Code Online (Sandbox Code Playgroud)

<variable_name>标识符在哪里,没有别的.

Mat*_*ero 5

这个循环:

for x in range(5):
   print(x)
Run Code Online (Sandbox Code Playgroud)

可以翻译成:

iterator = iter(range(5))
while True:
    try:
        x = next(iterator)
    except StopIteration:
        break
    print(x)
Run Code Online (Sandbox Code Playgroud)

遵循相同的概念,这个循环也是有效的:

t = [1,2,3]
for t[1] in 'abcd':
   print('hello')
Run Code Online (Sandbox Code Playgroud)
t = [1,2,3]
iterator = iter('abcd')
while True:
    try:
        t[1] = next(iterator)
    except StopIteration:
        break
    print('hello')
Run Code Online (Sandbox Code Playgroud)

最终的结果是 t == [1, 'd', 3]