“上面定义的Redeclared s没有使用”

时间:2016-10-01 15:46:18

标签: python intellij-idea

for i in range(10):
    s = 5
    for j in range(10):
        s = min(s)

上面的代码在第二行的IntelliJ中给出了这个问题的标题作为警告。

我很确定发生警告是因为在CFG中,由于嵌套循环,可能有两次连续写入(没有读入)到s。到目前为止,我一直忽略了警告,但为了安全起见,我想请求确认我的假设。

2 个答案:

答案 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)