for i in range(10):
s = 5
for j in range(10):
s = min(s)
上面的代码在第二行的IntelliJ中给出了这个问题的标题作为警告。
我很确定发生警告是因为在CFG中,由于嵌套循环,可能有两次连续写入(没有读入)到s
。到目前为止,我一直忽略了警告,但为了安全起见,我想请求确认我的假设。
答案 0 :(得分:1)
你的假设几乎是正确的。名称s
被限制为一个整数,其值从未在封闭循环中使用或更改,但它在嵌套循环中被反弹为另一个值(虽然会引发错误) 。请注意,第一个赋值不会随着外部for
循环的任何迭代而改变。
IDE的警告表明循环内的第一个分配是不必要的,因为s
从未改变过。分配也可能更好地置于for
循环之外,这将阻止冗余绑定和重新绑定:
s = 5
for i in range(10):
...
答案 1 :(得分:0)
这就是它所说的。 你重新制作了一些东西而不使用它或定义它。 对我来说,例如:
def car(e):
color = "blue"
print(color)
def car(r):
错误,我重新定义了这个功能,据我所知不能这样做,我没有做任何事情。 以为我在使用这个功能,没有意识到我正在重新定义它。
校正
def car(e):
color = "blue"
print(color)
car(e)