在Python中,我可以在不使用循环变量覆盖当前分配的情况下进行for循环吗?

时间:2019-05-01 20:59:32

标签: python

我正在使用带有已使用变量的for循环,并且for循环会覆盖先前定义的变量。我知道,简单的方法是使用其他变量名,但是还有另一种方法吗?

x = 999

for x in range(10):
    pass

print(x)
  
    

9

  

3 个答案:

答案 0 :(得分:3)

否,这是不可能的。该变量将不会被阴影化,而是分配给循环中每次迭代的值。唯一不正确的极端情况是迭代的对象在产生值之前引发异常。

答案 1 :(得分:0)

除非您将循环包含在其他作用域中,否则变量将被覆盖

例如,在一个函数内:

x = 999

def do_stuff():
  for x in range(10):
     pass

do_stuff()
print(x)

输出:

999

除了将循环包含在其他作用域之外,这是不可能的,您很可能需要重命名变量

答案 2 :(得分:0)

可以,但是只有在将for循环放在较低的作用域(例如函数内部)中时,

x = 999
def func:
    for x in range(10): pass
print(x)  # 999