Python 在列表理解中使用相同变量名时出错

Python 在列表理解中使用相同变量名时出错,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,我知道使用相同的变量名是一种不好的做法 我只是想知道技术上为什么会这样 In [1]: a=[1,2,3] In [2]: b=[4,5,6] In [3]: [a for a in a] Out[3]: [1, 2, 3] In [4]: a Out[4]: [1, 2, 3] In [5]: [(a,c) for a in a for c in b] Out[5]: [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3

我知道使用相同的变量名是一种不好的做法

我只是想知道技术上为什么会这样

In [1]: a=[1,2,3]

In [2]: b=[4,5,6]

In [3]: [a for a in a]
Out[3]: [1, 2, 3]

In [4]: a
Out[4]: [1, 2, 3]

In [5]: [(a,c) for a in a for c in b]
Out[5]: [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]

In [6]: [(a,b) for a in a for b in b]
---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
<ipython-input-6-bac0ec331d24> in <module>()
----> 1 [(a,b) for a in a for b in b]

<ipython-input-6-bac0ec331d24> in <listcomp>(.0)
----> 1 [(a,b) for a in a for b in b]

UnboundLocalError: local variable 'b' referenced before assignment
[1]中的
a=[1,2,3]
在[2]中:b=[4,5,6]
在[3]:[a代表a中的a]
Out[3]:[1,2,3]
在[4]中:a
Out[4]:[1,2,3]
在[5]中:[(a,c)代表a中的a代表b中的c]
[5]:[(1,4)、(1,5)、(1,6)、(2,4)、(2,5)、(2,6)、(3,4)、(3,5)、(3,5)、(3,6)]
在[6]中:[(a,b)代表a中的a代表b中的b]
---------------------------------------------------------------------------
取消绑定LocalError回溯(最近一次调用上次)
在()
---->1[(a,b)代表a中的a代表b中的b]
英寸(.0)
---->1[(a,b)代表a中的a代表b中的b]
UnboundLocalError:赋值前引用了局部变量“b”
根据

这与生成器表达式的行为一致: