在Python中,我可以创建一个for循环而不让循环变量覆盖当前赋值吗?

在Python中,我可以创建一个for循环而不让循环变量覆盖当前赋值吗?,python,Python,我将for循环与已经使用的变量一起使用,而for循环将覆盖先前定义的变量。我知道最简单的方法是使用不同的变量名,但还有其他方法吗 x = 999 for x in range(10): pass print(x) 九, 不,这是不可能的。变量将不会被隐藏,而是分配给循环中每个迭代的值。唯一不正确的情况是迭代对象在生成值之前引发异常。除非将循环包含在不同的范围内,否则变量将被覆盖 例如,在函数中: x = 999 def do_stuff(): for x in range(1

我将for循环与已经使用的变量一起使用,而for循环将覆盖先前定义的变量。我知道最简单的方法是使用不同的变量名,但还有其他方法吗

x = 999

for x in range(10):
    pass

print(x)
九,


不,这是不可能的。变量将不会被隐藏,而是分配给循环中每个迭代的值。唯一不正确的情况是迭代对象在生成值之前引发异常。

除非将循环包含在不同的范围内,否则变量将被覆盖

例如,在函数中:

x = 999

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

do_stuff()
print(x)
输出:

999

除了将循环包含在不同的范围之外,这是不可能的,而且您很可能需要重命名变量,但前提是将for循环放在较低的范围内,如函数内部

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

不,你不能,因为它包含在同一个范围内,在这里读一些如果这是困扰你的事情,你可能也会讨厌with和except目标是函数范围的,而block范围在Python中不是一般的东西。你只需要习惯它;在Python中,块作用域不是一种东西,也不可能很快成为一种东西。但是,首先,为什么您特别想这样做呢?我有一段相当长的代码,而且我的短名称变量已经用完了。但我对范围的理解是错误的,所以下次我将以不同的方式操作。谢谢你的回答。如果你有一段代码,很长时间都没有短变量名了,你应该1将其重构为函数,2停止使用短变量名。使用实际的描述性名称。