Python 3.x 选择有关迭代器的名称

Python 3.x 选择有关迭代器的名称,python-3.x,Python 3.x,在为迭代器选择名称时,我有一个一般性问题: 我有一个类“a”和方法“onemethod”: 如果我在列表中使用相同的迭代器名称,这有关系吗? 例如,这会给我带来问题吗 def onemethod(self): self.firstlist = [i for i in bla] self.secondlist = [i*2 for i in bla] self.thirdlist = [a*i for i in range(10)] 也就是说,如果我在这个方法的每个列表理

在为迭代器选择名称时,我有一个一般性问题: 我有一个类“a”和方法“onemethod”: 如果我在列表中使用相同的迭代器名称,这有关系吗? 例如,这会给我带来问题吗

def onemethod(self):
    self.firstlist = [i for i in bla]
    self.secondlist = [i*2 for i in bla]
    self.thirdlist = [a*i for i in range(10)]

也就是说,如果我在这个方法的每个列表理解中都使用“i”作为迭代器,这在某个时候会是一个问题吗?

只要您不期望
i
在这些列表理解和生成器表达式之外有任何特定的值,它就不会是一个问题


我认为,最好不要假设它甚至存在于那些上下文之外(即使它确实存在)。

Python2.x用于泄漏列表comp的范围-因此它可能会导致一些有趣的事情。。。但是,如果
i
不存在于理解范围之外的范围内,它就不存在了。。。(例如,在Python3.x中,它是一个适当的附件)不存在于理解范围之外,这是否意味着类似于“self.i”的东西?我一直认为在Python3中,没有“self”的名称是不能在方法之外访问的,还是我错了?