通常,我们使用
但有时可能不起作用。例如:
将失败。它为什么会失败,以及分配如何被解释?
A[i],A[j] = A[j],A[i]
进行交换。但有时可能不起作用。例如:
A=[1, 2]
A[0], A[A[0]] = A[A[0]], A[0]
将失败。它为什么会失败,以及分配如何被解释?
>>> def f(A):
... A[0], A[A[0]] = A[A[0]], A[0]
...
>>> dis.dis(f)
2 0 LOAD_FAST 0 (A)
3 LOAD_FAST 0 (A)
6 LOAD_CONST 1 (0)
9 BINARY_SUBSCR
10 BINARY_SUBSCR
11 LOAD_FAST 0 (A)
14 LOAD_CONST 1 (0)
17 BINARY_SUBSCR
18 ROT_TWO
19 LOAD_FAST 0 (A)
22 LOAD_CONST 1 (0)
25 STORE_SUBSCR
26 LOAD_FAST 0 (A)
29 LOAD_FAST 0 (A)
32 LOAD_CONST 1 (0)
35 BINARY_SUBSCR
36 STORE_SUBSCR
37 LOAD_CONST 0 (None)
40 RETURN_VALUE
2
2, 1
1, 2
1
A[A[0]]
直到赋值给A[0]
之后才被计算。A0 = A[0]
A[0], A[A0] = A[A0], A[0]